Spring源码分析【8】-分布式环境SpringSecurity保持用户会话
生活随笔
收集整理的這篇文章主要介紹了
Spring源码分析【8】-分布式环境SpringSecurity保持用户会话
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.SpringSecurity的權限控制流程是這樣的:
很明顯,要想用戶在其他機器也可以登錄,那么有兩種辦法:
用戶登錄,基礎信息UserInfo存在SpringSecurity的ThreadLocal里。
下面是contextHolder對象:
final class ThreadLocalSecurityContextHolderStrategy implementsSecurityContextHolderStrategy {// ~ Static fields/initializers// =====================================================================================private static final ThreadLocal<SecurityContext> contextHolder = new ThreadLocal<SecurityContext>();
很明顯,要想用戶在其他機器也可以登錄,那么有兩種辦法:
1).變通下,使用負載均衡保持用戶會話,也就是某些用戶永遠在某一臺上,這樣做大問題沒有,但是這樣做總歸是不太好的。
2).我們可以實現用戶在其他機器免登陸。
具體做法是,當用戶第一次登陸之后,在Redis里保存UserInfo。
當用戶在其他機器上檢測到沒有用戶登錄信息,那么需要替用戶做一次 免登陸的過程。
完整的流程:
總結
以上是生活随笔為你收集整理的Spring源码分析【8】-分布式环境SpringSecurity保持用户会话的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在jsp调试后端绑定对象
- 下一篇: 事务隔离机制原理分析以及是否可以防止订单