关于UserDetails类的问题
来源:4-6 认证流程源码级详解
Boomkeeper
2018-04-18
请问:在实际生产项目中,登录用户的账号、权限、地区、部门、职称等等信息通常会封装在一个类里面,最后缓存在session中,那么,在spring中的UserDetails类仅仅封装了账号、权限、是否锁定、过期等信息,其他更多的用户信息(比如部门、地区、姓名、性别等等)如何封装?如何获取?org.springframework.security.authentication.AbstractAuthenticationToken中有一个Object类型的details属性,它有什么作用?
写回答
1回答
-
UserDetails 只是个接口,封装了SpringSecurity框架需要用到的信息,实际的实现类可以封装更多的信息。通过SecurityContextHolder.getContext().getAuthentication().getPrincipal() 获取到你返回的 UserDetails 接口实现,然后强转成实际的类型即可。
details一般用来封装一些其它与认证过程相关的信息。比如发请求的客户端的ip地址,请求的时间等等,这些信息不会作为身份认证的凭据,但是可能会在你的认证流程中做一些其它的处理。不同的公司,不同的业务,对这方面的需求也不一样,所以是个object类型,你可以自己定义任何类型的对象放进去。
012018-04-24
Spring Security技术栈开发企业级认证与授权
Spring Security技术栈,REST风格开发常见接口,独立开发认证授权模块保证REST服务安全
2662 学习 · 1561 问题
相似问题