https://files-cdn.cnblogs.com/files/yummylucky/zhifu.bmp

支付宝

https://files-cdn.cnblogs.com/files/yummylucky/WeChat.bmp

微 信

不同域名共用一套登录登出,cookie domain 设置

最近公司做了三个系统,分别放在三个不同的域名下,想要共用同一套登入登出功能,实现让用户感觉仿佛在使用同一套系统,无缝操作。

三个系统且称为 A, B, C。

A 部署在主域名下,假如叫做 zhuyuming.com

B 部署在它的子域名下,假如叫做 b.zhuyuming.com

C 同B,c.zhuyuming.com

我们采用cookie携带用户token的方式,将用户登录后,后端返回的token放在 zhuyuming.com下。

所以,A直接可以读取cookie,B 和 C 站点可以看到cookie 的domain 为 .zhuyuming.com,直接拿到 jwt, 它的cookie name 值为 jwt

但是当需要登出的时候,删除cookie,必须要连带它的domain一起删除。

两种实现方法:

  如果系统是用vue写的,我用的是 vue-cookie ,写法是:

    this.$cookie.delete('jwt', { domain: '.zhuyuming.com' });

  如果是原生js或者,可以使用如下方式:

    document.cookie = "jwt=; expires=Mon, 11 Nov 2011 01:01:01 GMT; domain=zhuyuming.com;path=/" 

    这里稍微解释一下,domain 可以设置它的父域名及自身域名,如果省略domain,默认为当前域名。

    expires 需要是GMT格式的时间,只要是设置已经过去了的时间就可以删除这条cookie。

    path 不能省略,会造成重名cookie重复设置,而做不到清空想清空的cookie。

 

关于如何操作cookie的一个博客https://www.cnblogs.com/maderlzp/p/7843365.html

posted @ 2019-06-18 15:41  kiss雪夜  阅读(6731)  评论(0编辑  收藏  举报