我们在应用程序中使用PrincipalAware界面来获取一些与用户相关的内容。

我在网上搜索以获取有关效果较差的信息,这就是我在Google上获得的信息:


  公共接口PrincipalAware
  
  希望从HttpServletRequest对象访问Principal信息的操作应实现此接口。
  
  仅当在Servlet环境中使用Action时,此接口才有意义。通过使用此接口,您将不会受到servlet环境的束缚。


请帮助我理解它。

最佳答案

PrincipalAware接口允许Struts将PrincipalProxy对象注入到动作实例中。该代理可用于访问servlet安全机制。像这样



public class MyAction extends ActionSupport implements PrincipalAware {

  protected PrincipalProxy principal;

  public void setPrincipalProxy(PrincipalProxy principalProxy) {
    this.principal = principalProxy;
  }

  public PrincipalProxy getPrincipal() {
    return principal;
  }
}


现在,您可以在操作方法中或视图层上使用PrincipalProxy



<s:if test="principal.isUserInRole('role1')">


请注意,如果要基于角色限制某些操作的执行,则可以使用roles拦截器。

10-08 08:33