前段时间做了一个单点登录的系统,测试使用一段时间,流程是通,突然有一天测试让我看看她那里登陆后一直提示在其他地方登录,然后再次跳到单点登录的问题,然后我过去看,确实有这个问题,查看了登录后接口返回是新的token,但是每次登陆后调接口传递的参数都是一样的。因为在测试的电脑上我也没办法本地调试。
我就自己本地复现这个问题,无法复现,然后尝试多个系统打开,多个窗口打开均无法复现。然后暂时搁置了,某一天我本地开发的时候也遇到了这个问题,所以就开启了我得本地调试之旅,我发现每次单点登录系统跳转之前的cookies数据是新的,跳转到本系统之后console的token数据就是旧的,我打开浏览器调试面板的cookies数据,有两条一条是路径/ 一条是路径/company。
于是我尝试把登陆后设置的cookies数据设置成死的字符串“123” 发现cookies下的路径是/的数据是新设置的,然后我就明白了,可能是跟路径有关。然后我把单点登陆后设置cookies的path设置成/company。
然后我就去查找了js-cookies 的path的相关设置。
Cookies.set("userInfo", encodeUserInfo, {
// expires: 1000,
path: "/company",
domain: cookiesDomine,
});
然后发现确实好了,这次登陆后取值是新的了,那就确认了是由两个路径的path,所以是登陆后设置的cookies路径是/,但是多了一个/company路径的问题。所以我不知道/company路径的数据是哪里来的,我发现在/company页面提交后设置了cookies,但是没有设置path
Cookies.set("userInfo", encodeUserInfo, {
domain: cookiesDomine,
});
所以我猜测可能是没有设置路径导致cookies取了当前url的路径,所以我把这里的cookies加上了路径
Cookies.set("userInfo", encodeUserInfo, {
path: "/",
domain: cookiesDomine,
});
于是这个问题就解决了。
所以js-cookies的文档上写的是path不设置默认取根路径,但是实际上取了当前url的路径