使用spring 3安全性访问jsp页面中的自定义用户对象
我已经实现了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" %> ...
如果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
中。
如果您提供有关安全上下文配置的详细信息,我可以为您提供更多详细信息。