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

来源:互联网 发布:淘宝店铺卖 编辑:程序博客网 时间:2024/04/19 08:17
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。

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


完整的流程:


0 0