SecurityContextHolder里的Principal信息是陈旧的

来源:6-4 重构用户名密码登录

灵魂机器

2017-12-01

我试了下Spring OAuth2里使用RedisTokenStore,然后用SecurityContextHolder.getContext().getAuthentication(); 取得用户信息,发现信息还是旧的,比如MySQL里用户已经更新了他的lastName,但是SecurityContextHolder里的Principal 信息还是旧的。重启了SpringBoot服务器还是旧的。请问这个是什么原因造成的?


我查看了下Redis里面的内容,发现这个key "refresh_auth:40b5329b-4ba9-4696-ab52-366532558436"里面保存了Authentication信息,里面的lastName是旧的,我怀疑SecurityContextHolder里的Authentication信息是从Redis缓存中取的

写回答

1回答

JoJo

2017-12-04

是的,所以一般只在token里存个id,然后在服务中再用id去获取用户信息。

0
1
灵魂机器
看来的确是从Redis里取得Authentication信息,性能比较高,可以理解,非常感谢!
2017-12-07
共1条回复

Spring Security技术栈开发企业级认证与授权

Spring Security技术栈,REST风格开发常见接口,独立开发认证授权模块保证REST服务安全

2662 学习 · 1561 问题

查看课程