我正在通过 JBoss AS7 服务器使用 Struts 2 和 Rest Services 开发一个小型 Java EE 应用程序。
我对 REST 和 Web 内容使用 FORM auth,我对 REST 没有任何问题,但是在 Web 上,我必须区分 "manager"
和 "admin"
角色,以便向管理员用户显示一些额外的选项。
我想做类似的事情:
<s:if test="#request.isUserInRole("admin")>
但它不起作用。你知道有什么方法可以让我实现这样的目标吗?我应该如何区分我的 JSP 页面中的角色?
最佳答案
您可以使用 PrincipalAware
通过用于呈现 JSP 的操作来实现它。当您在 Struts2 注入(inject) PrincipalProxy
的操作中实现它时反对你的行为。确保 servlet-config
interceptor应用于 Action 。
public class MyAction extends ActionSupport implements PrincipalAware {
protected PrincipalProxy principal;
public void setPrincipalProxy(PrincipalProxy principalProxy) {
this.principal = principalProxy;
}
public PrincipalProxy getPrincipal() {
return principal;
}
}
然后你可以在 valueStack
中找到这个对象在 JSP 页面上并执行类似的操作<s:if test="principal.isUserInRole('admin')">
您也可以从 How do I obtain security details (JAAS). 访问此信息
关于jakarta-ee - Struts 2 访问 request.isUserInRole,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16997735/