Nac*_*ket 20 java spring-security
当Spring Security对用户进行身份验证时,它会创建一个UserDetail对象,并且可以在web-app中查找当前的UserId.但是,假设我想保留一个自定义用户对象,其中包含首选项和其他详细信息以及UserDetails或替换UserDetails.
那么,当Spring Security成功验证时,如何将自定义用户对象添加到会话?以及如何在Spring Security注销登录用户时从会话中删除自定义用户对象.
或者有任何适当的方法来做到这一点?
Gen*_*diy 18
执行此操作的最佳方法是让您的某个服务(可能是UserService)实现UserDetailsService,并在spring安全性XML中指定您希望使用自己的用户详细信息服务.
UserDetailsService需要做的是实现loadByUsername(String username)方法.此方法需要返回实现UserDetails的类.这可以是您自己的自定义对象存储您喜欢的任何内容.这样做的好处是,您可以通过spring security taglib从JSP访问对象的属性,并且它也始终可以从Spring Security Security中的SecurityContextHolder单例(线程安全)中获得.
以下是文档的链接:spring security manual,第8章 这是一篇关于为密码加密实现自定义用户详细信息服务的博客文章:示例用法
希望这可以帮助
编辑:忘记提及在注销时将从安全上下文和会话中删除该对象.这是最有用的,它完全由春季安全管理.