单点登录中遇到的bug

项目场景

在学习尚硅谷的商城项目中实现单点登录功能


PS:正常的单点登录应该是在设置cookie的时候,将cookie的domain属性设置为父域的域名,同时将cookie的path属性设置为根路径,将token保存到父域中,这样所有的子域应用就可以访问到这个cookie,例如gmall.com和list.gmall.com就是父子域名关系,我由于一些原因没有设置域名。

问题描述

在登录页面登陆后,已经设置过了token和userinfo,userinfo里面包含昵称,在跳转到首页后,按理说应该在首页页面进行显示,但是首页并没有显示昵称,并且查看当前页面包含的cookie,也找不到token和userinfo信息
这里是具体展示:
这里是首页:
在这里插入图片描述
进入登录页面:
在这里插入图片描述
登录验证成功后开始设置token和userinfo的cookie:
在这里插入图片描述

设置token:
在这里插入图片描述

设置userinfo:
在这里插入图片描述
此时cookie值都已经设置上:
在这里插入图片描述
登录成功之后,会重定向到登录之前的网址
在这里插入图片描述
可以发现,在重定向之后,之前所设置的cookie都已经消失不见了,而在首页的header页面,昵称当然也没有显示,明明已经登录过了,但是仍然是登录之前的页面

登录成功之后显示不正确的页面
在这里插入图片描述

登录成功之后应当显示的正确页面
在这里插入图片描述

原因分析

经过长时间的调试代码,最终发现,只是由于一个很小的问题导致达不到想要的效果,是因为把127.0.0.1打成了127.0.1.1
代码展示:
在这里插入图片描述
这个是header页面的代码,也就是在首页点击登录后,它跳转到了以127.0.1.1为ip地址的页面,也就是这个页面
在这里插入图片描述
因此在登录成功之后设置cookie的作用域,实际上是127.0.1.1,设置完之后再进行跳转,跳转到的是以127.0.0.1为ip地址的首页,这两个页面的ip地址不同,cookie只存在于以127.0.1.1为ip地址的页面,因此在跳转回以127.0.0.1为首页的页面后,userinfo和token这两个cookie值都没有,因此昵称也无法正常的在页面显示,还是未登录的页面。

cookie解释:如果在设置cookie时不指定domain属性,那么cookie的默认作用域是创建cookie的页面所在的域名。

这里是登录成功并且设置cookie之后跳转首页的代码:

window.location.href="http://127.0.0.1:9001/index"

解决方案

解决方案很简单,只需要把header页面中login方法的跳转页面的ip地址修改为127.0.0.1即可
代码展示:

login() {
                    //window.location.href:页面的跳转
                    //window.location.href:获取地址栏的内容
                    /*路径一样不要设置错我设置成了127.0.1.1*/
                    window.location.href = 'http://127.0.0.1:9001/login/login.html?originUrl='+window.location.href
                },

再次测试:
点击登录按钮跳到登录页面:
在这里插入图片描述
可以发现,此时的ip地址已经是127.0.0.1,和首页的ip地址相同,这样就能保证设置的cookie值在两个页面之中都会存在

这里是登录之后跳转到首页的页面:
在这里插入图片描述
可以发现,此时的userinfo和token的cookie值都已经存在,首页的昵称可以正常显示,表示登录成功

总结

127.0.0.1和127.0.1.1有什么不同?

127.0.0.1和127.0.1.1都是本地回环地址,用于在计算机上进行网络通信测试。它们的区别在于:

127.0.0.1是最常见的本地回环地址,也被称为"localhost"。它通常用于本地主机上的服务和应用程序进行通信。

127.0.1.1是一种特殊的本地回环地址,通常在某些Linux发行版中使用。它被用作本地主机名的别名,用于在本地主机上运行的网络服务和应用程序之间进行通信。

总的来说,127.0.0.1是通用的本地回环地址,而127.0.1.1是特定于某些Linux发行版的本地回环地址。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值