美文网首页
taobao.com 和 tmall.com 为什么能做到登录

taobao.com 和 tmall.com 为什么能做到登录

作者: Lee弟弟 | 来源:发表于2020-09-16 16:01 被阅读0次

    目录:

    • 登录互通
    • Cookie/Session的跨域共享
    • Cookie/Session的跨域共享的几种方法
      • 存储到服务器(数据库:mysql...、mamcache、redis)
      • 服务端同步(依赖 cookie)
      • 服务器同步
      • 总结
    • taobao.com 和 tmall.com 登录互通

    登录互通

    当前非常火的单点登录SSO,在多个系统的集群里,用户只需一次登陆,其他系统也会感知到用户登陆,不需要用户重新输入用户名密码登陆。

    这是外行人的理解,内行人就得看看其中的黑魔法。

    首先引入一个概念,Cookie/Session的跨域共享。

    Cookie/Session的跨域共享

    同域共享 Session

    介绍跨域共享之前,先说同域共享。多个站点在同一个域名下面是可以共享 Cookie 的,这是浏览器默认为我们做的工作,浏览器会把 Cookie 和 它的域存在本地,当你跳转到同域站点会在本地读取 Cookie 并带到请求的 header 发送给服务端。


    跨域共享 Session

    跨域共享顾名思义就是不同域名下也能共享 Cookie,实现身份验证,淘宝跟天猫的登陆互通就是这么干的。

    Cookie/Session的跨域共享的方法;

    • 存储到服务器(数据库: mongodb 、mysql...、memcache、redis):
      用户第一次登录时,服务端将 session 信息存储到服务器上。当用户跳转到另一个跨域页面时,会向服务器查看当前用户 session 的情况,如果有则直接返回实现登录状态同步。

    • 服务端同步(依赖 cookie):
      当用户跳转到另一个跨域页面B时,B服务端检查是否存在这个session,若没有就将 session 同步到 B服务端,实现 session 的同步。

    • 服务器同步:
      部署一台专门用作登录的服务器,用户首次登录会将 session 存入服务器,然后服务器将 session 同步到其他服务器上,达到 session 共享的目的。

    总结:
    其实单点登录的实现:用户第一次登录时,服务端将 session 信息存储到服务器上。当用户跳转到另一个跨域页面时,会向服务器查看当前用户 session 的情况,如果有则直接返回实现登录状态同步。
    简单来说就相当于实现一个中转站,这个中转站存放着需要共享登录状态服务应用的 session 信息,它就相当于一把钥匙,当用户进行应用跳转的时候都会来中转站看一看,如果 session 存在就直接使用这把钥匙把通往另一个应用的门打开,如果不在就得先确认用户身份(登录)制造 session 钥匙存在中转站再把门打开,用户的身份存储和身份的有效时间都是中转站说了算,统一管理的。

    实现:


    SSO流程图

    taobao.com 和 tmall.com 登录互通

    回过头来寻找淘宝跟天猫 Seesion 共享的方法:

    tmall-jsonp
    cookie

    我是用qq作为用户名,羞涩打码~
    不难发现当我登录过之后跳转到 tmall ,tmall 通过jsonp的形式加载login_api.do?xxxxxx文件来获取用户的 Cookie 从而实现 cookie 的共享,这个文件在登录淘宝的时候就会生成。

    END......我是个有底线的家伙......END

    相关文章

      网友评论

          本文标题:taobao.com 和 tmall.com 为什么能做到登录

          本文链接:https://www.haomeiwen.com/subject/yuhlyktx.html