[英]Show fields in jsp based on user roles(without using spring security)
[英]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.