zhangzengfei
2022-08-23 9dec22acde84e111a4f8f2d54d738586e50ff7ec
添加单点登录跳转
1个文件已添加
1个文件已修改
91 ■■■■■ 已修改文件
src/router/index.js 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/webroot/index.vue 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/index.js
@@ -124,10 +124,17 @@
    path: "/dataView",
    name: "dataView",
    component: () => import(/* webpackChunkName: "about" */ "../views/dataView")
  },
  {
    // 单点登录
    path: "/webroot",
    name: "webroot",
    component: () => import(/* webpackChunkName: "about" */ "../views/webroot")
  }
]
const router = new VueRouter({
  mode:'history',
  routes
})
src/views/webroot/index.vue
New file
@@ -0,0 +1,84 @@
<template>
  <div>
    <span>{{msg}}</span>
  </div>
</template>
<script>
import { tologin, getMenuPermission } from "@/api/login"
export default {
  name: "webroot",
  metaInfo: {
    title: "汇丰单点登录"
  },
  data() {
    return {
      msg:""
    }
  },
  mounted() {
    this.loginRobot()
  },
  methods: {
    loginRobot() {
      // 解析路由参数,并缓存
      let userInfoEncode = this.getQueryVariable("str")
      console.log("单点登录", userInfoEncode)
      if (userInfoEncode && userInfoEncode.length) {
        let userInfo = decodeURIComponent(userInfoEncode)
        console.log(userInfo)
        sessionStorage.setItem("autoLogin", userInfo)
        this.systemLogin({soStr: userInfo})
        return
      }
      // 登陆超时后的重新登陆
      let sessionInfo = sessionStorage.getItem("autoLogin")
      if (sessionInfo) {
        this.systemLogin({soStr: sessionInfo})
        return
      }
      this.$router.push("/login")
    },
    systemLogin(param) {
      console.log("发起登录请求")
      tologin(param).then(rsp => {
          const data = rsp.data
          const loginedInfo = {
            access_token: data.token_type + " " + data.access_token,
            refresh_token: data.refresh_token
          }
          sessionStorage.setItem("expires_in", data.expires_in)
          sessionStorage.setItem("loginedInfo", JSON.stringify(loginedInfo))
          getMenuPermission().then((rep) => {
            data.userInfo.permissions = rep.data.permissions
            sessionStorage.setItem("userInfo", JSON.stringify(data.userInfo))
            this.$router.push("/manageCenter")
          })
        })
        .catch((err) => {
          this.$router.push("/login")
        })
    },
    getQueryVariable(variable) {
      var query = window.location.search.substring(1)
      var vars = query.split("&")
      for (var i = 0; i < vars.length; i++) {
        var pair = vars[i].split("=")
        if (pair[0] == variable) {
          return pair[1]
        }
      }
      return false
    }
  }
}
</script>
<style>
</style>