Spring源码分析【8】-分布式环境SpringSecurity保持用户会话

1.SpringSecurity的权限控制流程是这样的:

用户登录,基础信息UserInfo存在SpringSecurity的ThreadLocal里。

《Spring源码分析【8】-分布式环境SpringSecurity保持用户会话》

下面是contextHolder对象:

final class ThreadLocalSecurityContextHolderStrategy implements
		SecurityContextHolderStrategy {
	// ~ Static fields/initializers
	// =====================================================================================

	private static final ThreadLocal<SecurityContext> contextHolder = new ThreadLocal<SecurityContext>();

很明显,要想用户在其他机器也可以登录,那么有两种办法:

1).变通下,使用负载均衡保持用户会话,也就是某些用户永远在某一台上,这样做大问题没有,但是这样做总归是不太好的。

2).我们可以实现用户在其他机器免登陆。

具体做法是,当用户第一次登陆之后,在Redis里保存UserInfo。

当用户在其他机器上检测到没有用户登录信息,那么需要替用户做一次
免登陆的过程

完整的流程:

《Spring源码分析【8】-分布式环境SpringSecurity保持用户会话》

    原文作者:Spring Cloud
    原文地址: https://blog.csdn.net/unix21/article/details/52817809
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞