单点登录-认证服务器与客户端的session过期时间如何统一

291 阅读2分钟

文章目录

写在前面

之前画了一个单点登录的逻辑图,其中有很多细节没有展现清楚。
终于把单点登录完整流程图画明白了!史上最完整的CAS单点登录完整图解!

今天就来讨论一下,认证服务器登录完成之后,如何与客户端保持session过期时间的统一?

引出问题

我们从流程图中可以看出,当用户完成了首次登录认证之后,会在认证服务器存放一份session,同样也会在客户端服务器存放一份session,以后再访问APP,不会再经过认证服务器来认证该用户是否登录,而是直接在APP的后台来认证即可。

那么问题来了,认证服务器有一份session,客户端服务器也有一份session,这两者如何同步?

假如说每次请求都同步一次的话,服务器压力也太大了,有没有更好的办法?
有!

解决问题

客户端服务器在认证的时候,存一份认证服务器的session过期时间,因为用户每次访问客户端页面,客户端服务器的session都会刷新过期时间。

每次客户端服务器校验session的时候,判断认证服务器的session是否过期,如果将要过期或者已经过期,就调用接口来刷新认证服务器的session过期时间,同时同步到客户端服务器中。

这样,就可以保证两者之间session过期时间的同步了,并且也没有很频繁的交互。

在这里插入图片描述

前后端分离项目

现在的项目大多数都是前后端分离项目了,可能cookie-session这一套已经不适用了,但是基本原理还是一样的。

无非session换成了token,原理大差不差,但是也有很多细节。

具体遇到再说吧~