目前有两个各自独立的项目网盘和论坛,现在要实现实现单点登录,但是两个系统的用户结构不同,可以做单点登录吗
2条回答 默认 最新
- 不会产品的产品经理 2017-08-30 06:59关注
楼主说是可以实现的,不过登录之后由于用户库不一样会有无权限的问题,具体 分析一下
要实现单点
1,通过分布式缓存做到session共享(如redis),即:两个系统共享登录的session信息。
2,前台请求将sessionId写入请求的header里边。sessionid存储的cookie中
3,这样当登录了一个系统之后,后台保存了登录信息到redis里边,而且登录校验的时候后台先通过请求的sessionid上redis里边查询
是否已经有登录信息了。如果有则获取登录信息,如果没有再校验用户名密码登录。
4,此时登录另外一个系统,从cookie中获取sessionid传到后台校验。
5,问题:两个系统必须是同源的,因为cookie不能非同源访问。即:必须是一个顶级域名下得二级域名如果两个系统是完全独立的,这个时候就要借助另外一个用户中心的系统来实现,实现原理跟上面描述的一样。
其实即使这样实现了,还是无法做到权限共享,因为一个系统在A登录,但是在B中无此用户,登录之后A再B系统里边没有任何权限。
所以另外一种实现方式比较简单粗暴。那就是定时同步两个系统的用户。
1,定时同步两个系统的用户
2,在两个系统分别加上登录另外一个系统的一个单点连接,连接中带着用户名和密码(当然要加密)
3,点击后则跳转到另外一个系统,因为带着用户名和密码,所以后台接收到之后直接过个校验。
以上是完全独立的两个系统实现单点的一种方案。很多erp就是这么实现的解决 4无用