Spring 春季安全。在每个页面上显示用户名

Spring 春季安全。在每个页面上显示用户名,spring,security,jsp,model-view-controller,spring-security,Spring,Security,Jsp,Model View Controller,Spring Security,我想在登录后存储用户信息,并在每个页面上显示我的登录名和用户名(使用jsp)。如何在jsp视图中访问存储登录用户信息的会话bean?使用 此标签允许访问当前 存储在中的身份验证对象 安全上下文。它呈现出一种 直接在 JSP。例如,如果委托人 身份验证的属性是 Spring Security的实例 UserDetails对象,然后使用 将 呈现当前用户的名称 当然,没有必要使用 这类东西的JSP标记和 有些人更喜欢少留一点 在视图中尽可能地使用逻辑。你可以 访问中的身份验证对象 您的MVC控制器(

我想在登录后存储用户信息,并在每个页面上显示我的登录名和用户名(使用jsp)。如何在jsp视图中访问存储登录用户信息的会话bean?

使用

此标签允许访问当前 存储在中的身份验证对象 安全上下文。它呈现出一种 直接在 JSP。例如,如果委托人 身份验证的属性是 Spring Security的实例 UserDetails对象,然后使用 将 呈现当前用户的名称

当然,没有必要使用 这类东西的JSP标记和 有些人更喜欢少留一点 在视图中尽可能地使用逻辑。你可以 访问中的身份验证对象 您的MVC控制器(通过调用 SecurityContextHolder.getContext().getAuthentication()) 并将数据直接添加到您的 用于按视图进行渲染的模型


这几乎是重复的。Spring支持的方法是

final String currentUser = SecurityContextHolder.getContext().getAuthentication().getName();

但是链接的讨论还有其他选择。

我假设您使用的是spring安全性。成功登录后,将UserDetails对象放入会话中,如下所示(如果登录成功,这通常是您将转发的控制器)

在JSP中,您可以访问UserDetails对象,如下所示:

<span class="message">Welcome ${userDetails.username}</span>
Welcome${userDetails.username}

将会话对象的lvl降低到较低级别,而不是使用本应为您处理它的Spring功能,这真的是一个好主意吗?
<span class="message">Welcome ${userDetails.username}</span>