春季安全。每页显示用户名

发布于 2024-09-17 19:09:22 字数 76 浏览 5 评论 0原文

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

I want to store user information after logging in and to display my login and username on every page (using jsp). How can I get access in my jsp views to the session bean that would store information of the user that is logged in?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

无语# 2024-09-24 19:09:22

使用 身份验证标签

此标签允许访问当前
认证对象存储在
安全上下文。它呈现一个
直接在对象的属性中
JSP。因此,举例来说,如果校长
身份验证的属性是
Spring Security 的实例
UserDetails 对象,然后使用
<秒:身份验证
属性=“principal.username”/>将要
呈现当前用户的名称。

当然,没有必要使用
用于此类事情的 JSP 标签以及
有些人喜欢保留尽可能少的东西
视图中尽可能的逻辑。你可以
访问 Authentication 对象
你的 MVC 控制器(通过调用
SecurityContextHolder.getContext().getAuthentication())
并将数据直接添加到您的
由视图渲染的模型。

use the authentication tag

This tag allows access to the current
Authentication object stored in the
security context. It renders a
property of the object directly in the
JSP. So, for example, if the principal
property of the Authentication is an
instance of Spring Security's
UserDetails object, then using
<sec:authentication
property="principal.username" /> will
render the name of the current user.

Of course, it isn't necessary to use
JSP tags for this kind of thing and
some people prefer to keep as little
logic as possible in the view. You can
access the Authentication object in
your MVC controller (by calling
SecurityContextHolder.getContext().getAuthentication())
and add the data directly to your
model for rendering by the view.

尘世孤行 2024-09-24 19:09:22

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

Object principal = SecurityContextHolder.getContext()
     .getAuthentication().getPrincipal();
HttpSession session = request.getSession(true); //create a new session

// put the UserDetails object here.
session.setAttribute("userDetails", principal);

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

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

I'm assuming you are using spring security. After successful login put the UserDetails object in the session like so (This is usually the controller where you would forward if login was successfull)

Object principal = SecurityContextHolder.getContext()
     .getAuthentication().getPrincipal();
HttpSession session = request.getSession(true); //create a new session

// put the UserDetails object here.
session.setAttribute("userDetails", principal);

In your JSP you can access the UserDetails object, like so:

<span class="message">Welcome ${userDetails.username}</span>
零度° 2024-09-24 19:09:22

这几乎与 使用 Spring Security 时,获取 bean 中当前用户名(即 SecurityContext)信息的正确方法是什么?< /a>. Spring 认可的方法是

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

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

This is a near duplicate to When using Spring Security, what is the proper way to obtain current username (i.e. SecurityContext) information in a bean?. The Spring endorsed method is

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

but the linked discussion has alternatives.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文