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

 2019-11-23 11:00  阅读(935)
文章分类:Spring Cloud

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

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

2019112310098\_1.png

下面是contextHolder对象:

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

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

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

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

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

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

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

完整的流程:

2019112310098\_2.png


来源:http://ddrv.cn/a/88268

点赞(0)
版权归原创作者所有,任何形式转载请联系作者; Java 技术驿站 >> Spring源码分析【8】-分布式环境SpringSecurity保持用户会话

相关推荐