记录一次cookie导致登录失败的惨案

现象描述:

前端登录成功后并没有从后端那里拿到登录信息,换句话说登录服务告诉我们登录成功了,但是后端却说我们没有登录成功。

背景:

因为前后端分离,所以前后端项目部署在两个子域名下。

因为要打通登录态,需要调用登录服务,登录服务会在 .baidu.com 下写入登录态。

前端域名:xxx.baidu.com

后端域名:yyy.baidu.com

原因:

后端拿到的登录态和登录服务下发的登录态不统一。

后端也记录了一次登录态在 yyy.baidu.com 下。

出现这种情况一般是登录态失效了导致的,第一次登录的时候浏览器没有任何登录态,登录的时候是没问题的。登录过一次之后登录态失效,也就是登录服务下发的登录态失效了,我们要跳转登录服务,然后登录服务刷新了浏览器 .baidu.com 下的登录态,但是yyy.baidu.com下失效的登录态还存在,请求接口yyy.baidu.com的时候后端接收到的是失效的登录态,所以总是说登录失败。

解决方法:

后端不要记录登录态,或者发现登录态失效清除掉自己记录的登录态即可。

记录该问题的原因:

这个问题不好查的原因是前端通过开发者工具只能看到xxx.baidu.com和.baidu.com下的cookie。也没想到去看yyy.baidu.com 下的cookie,所以比较谜。

最后仔细分析请求发送所带的cookie发现同一个key居然出现两次,才根据这条线索有所收获。

发布了48 篇原创文章 · 获赞 52 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/letterTiger/article/details/101620995