我们在应用程序中使用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
拦截器。