解决vue登录信息不及时更新问题
【摘要】 大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂 前言现在是:2022年5月20日09:59:34前面写过一篇文章,基于bladex框架实现的模拟登录,后来在测试的过程中发现了个问题,即A系统在跳转到本系统时,携带用户名和密码进行登录本系统是没有问题的;但是当A系统切换了别的用户,再跳转到本系统时,则本系统的用户信息还是上一个用户的信息,没有及时更新过来,本篇文章就是对这一问题的解决。 思...
大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂
前言
现在是:2022年5月20日09:59:34
前面写过一篇文章,基于bladex
框架实现的模拟登录,后来在测试的过程中发现了个问题,即A系统在跳转到本系统时,携带用户名和密码进行登录本系统是没有问题的;但是当A系统切换了别的用户,再跳转到本系统时,则本系统的用户信息还是上一个用户的信息,没有及时更新过来,本篇文章就是对这一问题的解决。
思路
出现这个问题的原因:
- 没有清空登录信息
- 没有重新登录
所以基于这两点出发,原来想的是在登录之前,先调用一下退出的方法,然后重新登录,后来同事说不用那么麻烦,直接在permission.js
文件中做登录操作就行,于是,我就照做了。
整体思路是这样的:
- 获取地址栏中参数
- 解析拿到用户信息
- 调用模拟登陆方法
- 将需要用到的值放在
sessionStorage
中 - 重定向到首页(去掉地址栏中挂的参数)
实现代码
router.beforeEach((to, from, next) => {})
中的代码如下:
//拿到地址栏中的参数
//获取顶部链接
let domain = getTopUrl();
//查找有没有?,有的话是三方过来的用户,没有的话就是本系统的
if(domain.indexOf("?")>0) {
//获取参数
let training = getQueryString("training");
//去掉后面的#login
if (training.indexOf("#/") > 0) {
training = training.split("#/")[0];
}
var up = jiexicode(training);
var username = up.split(",")[0];
var password = '';
if (up.indexOf("&memberid=") > 0) {
//会员
password = (up.split(",")[1]).split("&memberid=")[0];
//将会员id放在本地
sessionStorage.setItem("memberid", (up.split(",")[1]).split("&memberid=")[1]);
sessionStorage.setItem("tag", 0);
} else if (up.indexOf("&groupId=") > 0) {
//团组
password = (up.split(",")[1]).split("&groupId=")[0];
//将团组id放在本地
sessionStorage.setItem("groupId", (up.split(",")[1]).split("&groupId=")[1]);
sessionStorage.setItem("tag", 1);
}
var loginForm = {
username: username,
password: password,
};
//异步进行登录
store.dispatch("LoginPrammeSystem", loginForm).then(res => {
console.log("进来了permission.js的登陆的方法", domain);
location.href = location.origin;
});
return;
}
注意事项
return
一定要加上- 重定向地址栏中的链接时,一定要将参数去掉
- 以上两点只要有一点疏忽,则就会造成死循环!!!
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)