【问题标题】:Why we use PrincipalAware in Struts 2为什么我们在 Struts 2 中使用 PrincipalAware
【发布时间】:2015-07-14 22:18:16
【问题描述】:

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

我在网上搜索了有关它的信息,结果不佳,这是我在 Google 上得到的:

公共接口 PrincipalAware

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

仅当 Action 在 servlet 环境中使用时,此接口才相关。通过使用这个接口,您将不会被 servlet 环境所束缚。

请帮我理解一下。

【问题讨论】:

  • 哪一部分你不明白?
  • 在哪里以及为什么使用它。
  • 问:在哪里?答:行动。问:为什么? A:获取委托人信息。

标签: java security struts2


【解决方案1】:

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;
  }
}

现在,你可以在action方法或视图层上使用PrincipalProxy

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

注意,如果你想根据角色限制某些动作的执行,那么你可以使用roles拦截器。

【讨论】:

  • 感谢您的精彩解释。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-09
  • 2015-11-15
  • 2017-04-23
  • 1970-01-01
  • 2011-02-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多