登录www.baidu.com,访问tieba.baidu.com自动登录
自己的想法:登录baidu.com以后,服务器用redis记录登录者的客户端信息,再访问tieba.baidu.com的时候检查redis有没有这个客户端的登录情况,如果有,就运行登录。
大致想法是这样,不知道正确的实现方式是怎么样的?求分享点经验。
登录www.baidu.com,访问tieba.baidu.com自动登录
自己的想法:登录baidu.com以后,服务器用redis记录登录者的客户端信息,再访问tieba.baidu.com的时候检查redis有没有这个客户端的登录情况,如果有,就运行登录。
大致想法是这样,不知道正确的实现方式是怎么样的?求分享点经验。
业务要求使用redis么?
我说说常规的单点登陆实现方案吧:
某个项目登陆成功,广播其他注册的项目进行登陆操作[写session的操作]
某个项目登陆成功,url会携带一个token,各个项目通过解析ticket获取uid进行写session操作
服务器A : www.baidu.com
服务器B : tieba.baidu.com
服务器C : redis服务器
用户在 A 登录,存cookie到C;
用户跳转到 B ,登录验证 : B 访问 C 查询用户是否已登录 !
可以采用 OAuth 2.0
,需要实现一个认证服务器 OAuth Server
(假设为:passport.baidu.com),接入方相当于 OAuth Client
。关于 OAuth 2.0
可参考阮老师文章:http://www.ruanyifeng.com/blo...
3 回答669 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
3 回答686 阅读✓ 已解决
2 回答533 阅读✓ 已解决
3 回答673 阅读✓ 已解决
5 回答832 阅读
4 回答724 阅读✓ 已解决
这里满设涉及的概念称之为 服务化/微服务化。
现在有以下三个服务器:
www.baidu.com (调用者)
tieba.baidu.com (调用者)
pic.baidu.com (调用者)
login.baidu.com (服务者)。
对于各个模块之间应该保持充分的独立性,如login.baidu.com对于外部调用者来说就是一个接口服务,调用者不能也没资格去直接操作服务者的功能,而应该使用服务者提供的接口(如登录,如查询是否登录)来进行业务处理。
实现思路是你说的那个方向,可以看看我的这个回答: session多端登陆,共享怎么做的啊? (当然我这个是偏向于Session共享而不是SSO)