本文概览:解析Sentinel通过session实现单实例登录流程;通过redis代替session保存登录信息,从而实现分布式登录。

1 sessionsessionId

当用户第一次访问服务端时,服务端创建一个session,以<sessionId,session>键值对的方式保存到服务端缓存中,并把sessionId通过cookie方式发送给客户端。后续客户端发送请求,都会把这个sessionId传给服务端,服务端从cookie中获取到这个sessionId,然后根据sessionId从服务器缓存(类似一个Map<sessionId,session>)中获取session

Snip20200629_24

2 通过session实现单实例登录

sentinel的源码为例:

1、第一次登录

2、登录完成之后,对请求进行鉴权.

通过获取session中用户信息来判断是否已经登录:存在用户信息,表示已经登录,否则未登录。

通过authService.getAuthUser从session中获取用户信息:

3、退出登录。通过session的invalidate清空sesssion。

3 通过Redis实现分布式session

通过redis代替session来保存用户登录信息。如下:

1、登录接口

2、登录验证

3、退出登录

 

分类&标签