登录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有没有这个客户端的登录情况,如果有,就运行登录。
大致想法是这样,不知道正确的实现方式是怎么样的?求分享点经验。
可以采用 OAuth 2.0
,需要实现一个认证服务器 OAuth Server
(假设为:passport.baidu.com),接入方相当于 OAuth Client
。关于 OAuth 2.0
可参考阮老师文章:http://www.ruanyifeng.com/blo...
服务器A : www.baidu.com
服务器B : tieba.baidu.com
服务器C : redis服务器
用户在 A 登录,存cookie到C;
用户跳转到 B ,登录验证 : B 访问 C 查询用户是否已登录 !
4 回答2.9k 阅读
4 回答2.5k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
2 回答2.3k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
这里满设涉及的概念称之为 服务化/微服务化。
现在有以下三个服务器:
www.baidu.com (调用者)
tieba.baidu.com (调用者)
pic.baidu.com (调用者)
login.baidu.com (服务者)。
对于各个模块之间应该保持充分的独立性,如login.baidu.com对于外部调用者来说就是一个接口服务,调用者不能也没资格去直接操作服务者的功能,而应该使用服务者提供的接口(如登录,如查询是否登录)来进行业务处理。
实现思路是你说的那个方向,可以看看我的这个回答: session多端登陆,共享怎么做的啊? (当然我这个是偏向于Session共享而不是SSO)