登录态相关的几个名词新人比较容易迷惑它们的含义,在这里记录下它们的含义和作用。

1.cookie登录

cookie机制大家都清楚,HTTP协议是无状态的,为了能够知道用户上一次访问的情况而引入的机制。通常是用来实现登录机制和记录一些用户信息。在用户第一次访问之后就会创建这个cookie,之后每次访问每一次访问,浏览器都会带上这个cookie。这种最常见cookie也叫第一方cookie

image.png

2.同源政策

但是随着web变得庞大,一家公司往往有多个web应用时,这种cookie实现登录的弊端就开始出现了。由于cookie同源政策的限制,用户需要在多个应用都登录一遍,退出登录也是需要一个个系统去登录。体验不好

所谓”同源”指的是”三个相同”。协议相同,域名相同,端口相同。同源策略限制了从同一个源加载的文档或脚本如何与来自另一个源的资源进行交互。这是一个用于隔离潜在恶意文件的重要安全机制。

image.png

image.png

3.二级域名

都是一个公司的产品,对用户而言都应该是一个整体。登录就整体一起登录,退出登录也一样。要实现这个效果,最简单的方法就是通过二级域名

举例来说,https://partner.aliyun.com 中的 aliyun 就是二级域名

在生成cookie的时候将 cookie.domain 设置为二级域名,即可在相同的二级域名下实现cookie共享。也就实现了统一登录和统一注销。
不过这种实现方案有两个缺点:1.二级域名必须一致 2.服务端对于sessionId的解析要一致(tomcat为JSESSIONID),对于技术栈有一定的限制

  1. ![image.png](https://cdn.nlark.com/yuque/0/2019/png/297838/1574955069559-80b6d04d-83b2-4d77-a3e2-623d95e3d0fc.png#align=left&display=inline&height=457&margin=%5Bobject%20Object%5D&name=image.png&originHeight=914&originWidth=1118&size=250544&status=done&style=none&width=559)

4.单点登录

更灵活的一种方案则是单点登录(SSO, Single Sign On),其中的关键是要建立一个注册中心
image.png

5.第三方cookie和cna

单点登录解决多个系统登录注销的问题。但同源政策对于cookie的另一个作用:记录用户行为,的限制并没有接触。对于公司运营人员,往往期望能够看到用户在我们的产品上都什么时候,做了些什么,对GMV有什么样的影响。在同一源下面,第一方cookie即可记录相应信息。但想了解用户在多个产品间连贯的(比如先去淘宝,天猫再去飞猪的web),就需要用到第三方cookie

比如,访问A这个网站,这个网站设置了一个Cookie,这个Cookie也只能被A这个域下的网页读取,这就是第一方Cookie。如果还是访问A这个网站,网页里有用到B网站的一张图片,浏览器在B请求图片的时候,B设置了一个Cookie,那这个Cookie只能被B这个域访问,反而不能被A这个域访问,因为对我们来说,我们实际是在访问A这个网站被设置了一个B这个域下的Cookie,所 以叫第三方Cookie。

简单说,想记录用户在多个产品间的连贯操作,都种下同一个第三方cookie即可。而cna则是常用的记录的cookie值
image.png

参考文章:
1.单点登录原理和简单实现:https://www.cnblogs.com/ywlaker/p/6113927.html
2.第一方cookie和第三方cookie:https://www.jianshu.com/p/001bbd5a414a
3.浏览器的同源策略:https://developer.mozilla.org/zh-CN/docs/Web/Security/Same-origin_policy
4.单点登录(SSO)实现方法(二级域名与主域名):https://www.cnblogs.com/Easty/p/7338940.html