jakarta-ee - Struts 2 访问 request.isUserInRole

标签 jakarta-ee authentication struts2 jboss roles

我正在通过 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/

相关文章:

java - 请建议一个基本的例子

java - 在 Struts 2.5 中使用顶级对象

struts2 - jar META-INF 资源中的 Servlet 3.0 磁贴定义

jakarta-ee - java.lang.ClassFormat错误: Illegal class name "groovy/jmx/builder/package-info" in class file groovy/jmx/builder/package-info

jakarta-ee - 在发送到死信队列之前修改 JMS 消息

rest - JWT 认证和刷新 token 实现

ios - WKWebView中的用户名/密码认证

java - JAX-RS 2.0/RESTeasy 中的版本 API

java - 是否可以使用 @RequestParam 从 JSON 转换为域对象

java - 过滤涉及安全约束的请求