struts2 - 如何在我的Web应用程序的每个页面上获取用户名

时间:2011-07-16 07:47:30

标签: java struts2

我使用拦截器检查用户是否有效&如果是这样,请将他发送给该操作,否则将拒绝他执行操作。我已将其添加到默认堆栈中,以便它可以在用户调用的每个操作上发生。 它的工作正常&我得到了预期的结果,唯一的问题是现在我想在每个页面的标题上显示用户名。那么有没有办法可以从拦截器向我调用的每个动作或直接向jsp发送一些像username这样的变量?

4 个答案:

答案 0 :(得分:1)

您可以将数据添加到会话&访问每个页面中的会话值...

答案 1 :(得分:1)

您需要以每个请求都可以访问经过身份验证的对象的方式保留它。方法是将用户对象存储在会话中,或至少存储用户名等标识符,您可以使用该标识符再次检索用户对象。

答案 2 :(得分:0)

我不知道你在使用什么库。但我认为检索当前用户用户名的通用方法是调用httpServletRequest.getUserPrincipal()。getName()

当我使用spring security

时,它也有效

答案 3 :(得分:0)

另一种选择。在您的基本操作中添加:

public String getLoggedInUser() {
  return ServletActionContext.getRequest().getRemoteUser();
}

在您的(jsp)视图中,您将能够通过以下方式访问当前登录的用户名:

${loggedInUser}

<s:property value="loggedInUser"/>