关于单点登录

2018-06-29  本文已影响0人  CallMeTommy

公司网站要拆分域名,需要实现单点登录这个功能。
于是这边做一个 center 来同步登录状态.

网上查了一下,单点登录更多的是一种思路. 其实实现难度并不大.
这是我找到的流程图, 侵删.

image

很明显的说明了问题。

  1. 发起请求 -> 本地存在token -> 向服务器发起请求验证token是否有效 -> 有效 -> 返回资源.
  2. 发起请求 -> 本地存在token -> 向服务器发起请求验证token是否有效 -> 无效 -> 重新进入3,4的步骤.
  3. 发起请求 -> 本地不存在token -> 访问服务器验证服务器是否还存在session -> 有 -> 返回token + 资源 -> 本地重新写入token.
  4. 发起请求 -> 本地不存在token -> 访问服务器验证服务器是否还存在session -> 无 -> center 跳转到登录界面 -> 登录成功 -> 返回token和资源 -> 本地重新写入token.

流程很简单。
接下来我又遇见了几个问题.

  1. token加密的方式
  2. 跨域的问题(我用jsonp搞定了)
  3. 安全性问题。怎么过滤无效请求.
  4. 最大的问题就是客户端怎么知道token已经失效了.

4
我这种做法客户端和服务端是长连接的. 也就是说服务端没办法通知客户端token失效了.

比如 client1 退出登录,我在服务端取消了token. 但是 client2 并不知道,只能等client2请求才能得到token已经失效,然后要求用户重新登录. 于是这个请求时间就要看需求了。 是否需要马上知道,还是说可以有缓冲的时间.

不过已经快写完了。 这个功能看起来简单,要写好而且保证问题还是要花点时间

上一篇 下一篇

猜你喜欢

热点阅读