为什么我们在Struts 2中使用PrincipalAware

时间:2015-02-04 10:37:39

标签: java security struts2

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

我在网上搜索得到的信息效果不佳,这就是我在Google上获得的信息:

  

公共接口PrincipalAware

     

希望从HttpServletRequest对象访问Principal信息的操作应实现此接口。

     

仅当在servlet环境中使用Action时,此接口才相关。通过使用此接口,您将不会与servlet环境绑定。

请帮助我理解。

1 个答案:

答案 0 :(得分:3)

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拦截器。