簡體   English   中英

使用spring 3安全性訪問jsp頁面中的自定義用戶對象

[英]Accessing my custom user object in jsp page, using spring 3 security

我已經實現了UserDetailsService ,它返回一個MyUser實例(實現UserDetails

public MyUser loadUserByUsername(String arg0)

現在我想在我的JSP頁面中訪問MyUser上的自定義getter / fields,到目前為止我得到了這個:

${pageContext.request.userPrincipal.name}

但這只允許訪問Principal對象。 如何訪問MyUser對象?

它在jsp頁面中很容易我添加了這個:

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

如果principal實際上是MyUser的一個實例,那么“firstname”可以是我的任何自定義getter和setter

在分析了HTTPSesson之后,在成功登錄后立即發現有一個名為SPRING_SECURITY_CONTEXT的屬性。 例如,我的自定義UserDetails具有名為user的對象,其具有屬性firstName 在JSP中,可以使用以下命令達到此屬性的值:

${sessionScope.SPRING_SECURITY_CONTEXT.authentication.principal.user.firstName}

如果您的MyUser對象實現了Principal並且在成功登錄時將其放在http會話中,您可以從會話中獲取它並進行轉換。


您可以實現AuthenticationSuccessHandler在其中注入UserDetailsService並將其放入會話中。

然后,您可以將AuthenticationSuccessHandler注入UsernamePasswordauthenticationFilter ,該文件處理<form-login>元素。

如果您提供有關安全上下文配置的詳細信息,我可以為您提供更多詳細信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM