2011-11-13 43 views

回答

0

它一直以來我正在處理Spring Security的最後時間相當長一段時間,但我設法從一箇舊的項目找到這個:

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

我可能是錯的,但我認爲「委託人」這返回的是UserDetailsS​​ervice實現在用戶登錄時返回的對象(可能是UserDetails實現)。所以你可以通過這個方法獲取用戶信息,然後將它傳遞給jsp頁面進行渲染。希望這可以幫助。

編輯:看了一下Spring Security的文檔,似乎有可供JSP的一個taglib,所以你可以使用Spring Security直接得到的信息:

這個標籤允許訪問當前的認證對象存儲在 的安全上下文中。它直接在JSP中呈現對象的屬性 。因此,例如,如果 身份驗證的主要屬性是Spring Security的UserDetails對象的實例,則 然後使用<sec:authentication property="principal.username" />將 呈現當前用戶的名稱。

1

我使用Maven,所以我不得不標籤庫庫將它添加到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" />