比如百度的账号登陆以后,去奇艺也自动显示登陆了 貌似共享了cookies,这是怎么做到的?服务端共享了cookies id?
提供一个Ucenter的思路。
首先要有一个中心系统U,然后我有三个网站A、B、C需要同步登录。用户在A站登录后,通知U,由U去通知B和C同步登录(B和C可以分别生成自己的cookies)。三个网站不需要共享cookies,并且跨域也不能共享cookies。
如果楼主想了解更多的技术实现,可以去了解下SSO单点登录。
可以简单的举个例子:A、B、C三个网站,A站用来存储用户登陆信息,B、C两个站都嵌套A站的登陆API,不管在B站还是在C站登陆都由A站存储登陆信息,那么不管是B站或者C站都可以调用A站的登陆信息,从而实现跨域互通。这样说,应该能理解吧。实际架构中,可以有很多种实现方法,视具体需求而定,核心逻辑就是以上了。
1 回答1.3k 阅读✓ 已解决
2 回答1.6k 阅读
1 回答1.3k 阅读
5 回答276 阅读✓ 已解决
1、需要一个统一处理用户登录的单点系统UserCenter。该系统集中处理用户信息,包括用户信息加密存储,用户注册,用户登录验证,SSO接入等;
2、需要接入SSO单点登录的系统(例如业务系统A)不处理任何用户登录信息,服务器端在用户第一次提交请求时,跳转到SSO系统验证是否登陆,如未登录,则一般重定向SSO系统的登录页面,用户登录成功以后,再回跳到业务系统A原来的页面,业务系统A与此同时写入由SSO带回来的用户信息到session中,后续的交互过程中,业务系统A就一直保持有用户的登录信息了。
3、假如用户由上述登录过的业务系统A跳转访问到同样接入到SSO单点登录系统UserCenter的业务系统B,此时业务系统B没有用户登录信息,同样会跳转SSO单点登录系统验证是否登录,SSO检测到用户之前已登录,又重定向到业务系统B,此时系统B从SSO带回登录信息并写入到session,这样用户就做到了,一处登录多处保持登录信息,即完成了SSO单点登录。
PS:在移动互联网大行其道的今天,SSO提供多种登录验证方式也很重要,除了传统的HTTP、API接入,现在也会提供手机动态验证码、手机二维码、硬件密码令牌等多种新型登录验证方式。