系统跳转免登录

本文实现的功能是从其他系统携带身份验证字段通过iframe嵌套到我们系统中某个页面,当校验到身份证号有权限时接口直接返回token进入系统,无需再登录。

  1. index.vue
import useUserStore from "@/store/modules/user";

// 在进入页面时,获取浏览器地址中我们协定好的身份证字段PSign,当获取到PSign后先将之前token清除,再将PSign给到接口获取token,获取到token则标识用户有权限,并将token存储到vuex中,否则无权限
// 若没有PSign,但可以获取到登录的token,表示是从我们系统登录进入的
// 若PSign和登录token都获取不到,则不进入
onMounted(() => {
  let urlObj = getQueryObject(decodeURIComponent(window.location.href))
  const token = getToken();
  if (urlObj.PSign) {
    removeToken();
    let param = new FormData();
    param.append("PSign", urlObj.PSign);
    useUserStore().loginByIdNumber(param).then((res) => {
          viewFlag.value = true;
          initData();
        }, (err) => {
          viewFlag.value = false;
        }
    );
  } else if (token) {
    viewFlag.value = true;
    initData();
  } else {
    viewFlag.value = false;
  }
})
  1. src/utils/index.js 公共方法获取地址栏字段
/**
 * @param {string} url
 * @returns {Object}
 */
export function getQueryObject(url) {
  url = url == null ? window.location.href : url;
  const search = url.substring(url.lastIndexOf("?") + 1);
  const obj = {};
  const reg = /([^?&=]+)=([^?&=]*)/g;
  search.replace(reg, (rs, $1, $2) => {
    const name = decodeURIComponent($1);
    let val = decodeURIComponent($2);
    val = String(val);
    obj[name] = val;
    return rs;
  });
  return obj;
}

token需改存储到sessionStorage中,了解可查看【https://blog.csdn.net/carry_chenxiaodong/article/details/114278838】

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值