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