1.SpringSecurity的权限控制流程是这样的:
很明显,要想用户在其他机器也可以登录,那么有两种办法:
用户登录,基础信息UserInfo存在SpringSecurity的ThreadLocal里。
下面是contextHolder对象:
final class ThreadLocalSecurityContextHolderStrategy implements
SecurityContextHolderStrategy {
// ~ Static fields/initializers
// =====================================================================================
private static final ThreadLocal<SecurityContext> contextHolder = new ThreadLocal<SecurityContext>();
很明显,要想用户在其他机器也可以登录,那么有两种办法:
1).变通下,使用负载均衡保持用户会话,也就是某些用户永远在某一台上,这样做大问题没有,但是这样做总归是不太好的。
2).我们可以实现用户在其他机器免登陆。
具体做法是,当用户第一次登陆之后,在Redis里保存UserInfo。
当用户在其他机器上检测到没有用户登录信息,那么需要替用户做一次 免登陆的过程。
完整的流程: