文章目录
写在前面
之前画了一个单点登录的逻辑图,其中有很多细节没有展现清楚。
终于把单点登录完整流程图画明白了!史上最完整的CAS单点登录完整图解!
今天就来讨论一下,认证服务器登录完成之后,如何与客户端保持session过期时间的统一?
引出问题
我们从流程图中可以看出,当用户完成了首次登录认证之后,会在认证服务器存放一份session,同样也会在客户端服务器存放一份session,以后再访问APP,不会再经过认证服务器来认证该用户是否登录,而是直接在APP的后台来认证即可。
那么问题来了,认证服务器有一份session,客户端服务器也有一份session,这两者如何同步?
假如说每次请求都同步一次的话,服务器压力也太大了,有没有更好的办法?
有!
解决问题
客户端服务器在认证的时候,存一份认证服务器的session过期时间,因为用户每次访问客户端页面,客户端服务器的session都会刷新过期时间。
每次客户端服务器校验session的时候,判断认证服务器的session是否过期,如果将要过期或者已经过期,就调用接口来刷新认证服务器的session过期时间,同时同步到客户端服务器中。
这样,就可以保证两者之间session过期时间的同步了,并且也没有很频繁的交互。
前后端分离项目
现在的项目大多数都是前后端分离项目了,可能cookie-session这一套已经不适用了,但是基本原理还是一样的。
无非session换成了token,原理大差不差,但是也有很多细节。
具体遇到再说吧~