欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 八卦 > 两个若依系统,不能同时登录问题解决方案

两个若依系统,不能同时登录问题解决方案

2024/10/24 17:31:12 来源:https://blog.csdn.net/qq_43770056/article/details/141195634  浏览:    关键词:两个若依系统,不能同时登录问题解决方案

原因:

问题根源在于两个独立的系统(A系统与B系统)共享了同一cookie键名来存储各自用户的认证令牌(token)。这种设计导致了以下情形:

  • 当用户在A系统登录后,一个token被存储在cookie中,使用了特定的键名。
  • 同一用户在B系统中也进行了登录,然而B系统同样使用了相同的键名来存放其专属的token。
  • 由于两个系统可能使用不同的后端服务和数据存储(如各自的Redis实例),当B系统尝试验证cookie中的token时,它实际上是在查询自己系统的认证数据库(如Redis),而不是A系统的。

当用户从B系统访问A系统时,由于B系统覆盖了cookie中的token,A系统尝试使用这个由B系统颁发的token进行认证,自然在A系统的后端(如Redis)中找不到对应的记录,导致认证失败,用户被迫重新登录A系统。

解决方案建议:

为了避免此类问题,每个系统应当使用独特的cookie键名来存储其认证信息。这可以确保系统间的token隔离,防止互相干扰。具体做法如下:

  1. 为每个系统分配唯一的cookie键名:例如,A系统可以使用token_A,B系统使用token_B。这样,即使用户在同一浏览器中登录了多个系统,每个系统的token也不会相互覆盖。

  2. 前端代码调整:在前端的认证模块中,如getToken方法,根据当前系统环境变量或配置文件中定义的键名来获取token,而不是硬编码一个通用的键名。

  3. 后端认证服务调整:后端也需要相应地调整,以支持各自系统的token认证流程,确保token的生成、存储和验证都在对应系统的上下文中进行。

总结:

将/src/utils/auth.js中TokenKey值修改成不同的值就好了

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com