在经过身份验证的用户的jsp标头中显示用户全名和其他字段

时间:2011-11-13 13:44:02

标签: java spring-mvc spring-security

我想要实现的是在标题的底部我想展示一些关于经过身份验证的用户的字段,

我希望能够获得的字段是该用户的ID,位置和全名

我不确定如何解决这个问题

提前致谢。

2 个答案:

答案 0 :(得分:1)

我正在使用Maven,所以我必须添加taglibs库,将其添加到pom.xml

<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-taglibs</artifactId>
    <version>3.1.3.RELEASE</version>
</dependency>

然后在我的jsp中添加:

<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>

<sec:authentication property="principal" />

答案 1 :(得分:0)

自从我上次与Spring Security打交道以来已经有一段时间了,但我设法从一个旧项目中找到了这个:

public static Object getPrincipal() 
{
    Authentication auth = SecurityContextHolder.getContext().getAuthentication();
    return auth == null ? null : auth.getPrincipal();
}

我可能错了,但我认为返回的'principal'是用户登录时返回的UserDetailsS​​ervice实现的对象(可能是UserDetails实现)。因此,您可以通过此方法获取用户信息,然后将其传递给jsp页面进行渲染。希望这会有所帮助。

编辑:看了一下Spring Security文档,似乎 jsp taglib可用,所以你可以直接从Spring Security获取信息:

  

此标记允许访问存储在其中的当前Authentication对象   安全上下文。它直接呈现对象的属性   JSP。所以,例如,如果是的主要属性   身份验证是Spring Security的UserDetails对象的一个​​实例,   然后使用<sec:authentication property="principal.username" />将   呈现当前用户的名称。