From 60b4e3f57042c32aca2be628042fd6eff5c87249 Mon Sep 17 00:00:00 2001
From: xiebin <123456>
Date: Tue, 30 Aug 2022 10:24:55 +0800
Subject: [PATCH] 优化登录相关

---
 src/util/store.js   |    7 +++++--
 src/permission.js   |   27 ++++++++++++++++++++++++++-
 vue.config.js       |   10 ++++++----
 src/api/user.js     |    5 +++++
 src/router/axios.js |    5 +++++
 5 files changed, 47 insertions(+), 7 deletions(-)

diff --git a/src/api/user.js b/src/api/user.js
index ae41c7c..d60fb3b 100644
--- a/src/api/user.js
+++ b/src/api/user.js
@@ -1,6 +1,11 @@
 import request from '@/router/axios';
 import website from "@/config/website";
 
+export const loginInfoByToken = () => request({
+  url: '/api/blade-auth/getuser/token',
+  method: 'get',
+});
+
 export const loginByUsername = (tenantId, deptId, roleId, username, password, type, key, code) => request({
   url: '/api/blade-auth/oauth/token',
   method: 'post',
diff --git a/src/permission.js b/src/permission.js
index 2f88c34..418ad23 100644
--- a/src/permission.js
+++ b/src/permission.js
@@ -8,6 +8,8 @@
 import {getToken} from '@/util/auth'
 import NProgress from 'nprogress' // progress bar
 import 'nprogress/nprogress.css' // progress bar style
+import {loginInfoByToken} from '@/api/user'
+import {Message} from "element-ui";
 NProgress.configure({showSpinner: false});
 const lockPage = store.getters.website.lockPage; //锁屏页
 router.beforeEach((to, from, next) => {
@@ -57,7 +59,30 @@
     if (meta.isAuth === false) {
       next()
     } else {
-      next('/login')
+      // 需要判断是否单点登录
+      let token = window.sessionStorage.getItem('token')
+      if (token) {
+        loginInfoByToken.then(res => {
+          const data = res.data;
+          if (data.error_description) {
+            Message({
+              message: data.error_description,
+              type: 'error'
+            })
+          } else {
+            this.$store.commit('SET_TOKEN', data.access_token);
+            this.$store.commit('SET_REFRESH_TOKEN', data.refresh_token);
+            this.$store.commit('SET_TENANT_ID', data.tenant_id);
+            this.$store.commit('SET_USER_INFO', data);
+            this.$store.commit('DEL_ALL_TAG');
+            this.$store.commit('CLEAR_LOCK');
+            next(to.path)
+          }
+
+        })
+      } else {
+        next('/login')
+      }
     }
   }
 })
diff --git a/src/router/axios.js b/src/router/axios.js
index 7b0a00d..101fa8a 100644
--- a/src/router/axios.js
+++ b/src/router/axios.js
@@ -39,6 +39,11 @@
   if (getToken() && !isToken) {
     config.headers[website.tokenHeader] = 'bearer ' + getToken()
   }
+  // 获取统一登录携带的token
+  const tokensso = window.sessionStorage.getItem('token')
+  if (tokensso) {
+    config.headers[website.tokenHeader] = 'bearer ' + tokensso
+  }
   //headers中配置text请求
   if (config.text === true) {
     config.headers["Content-Type"] = "text/plain";
diff --git a/src/util/store.js b/src/util/store.js
index 6388ec2..d4cb67d 100644
--- a/src/util/store.js
+++ b/src/util/store.js
@@ -13,6 +13,10 @@
         content,
         type,
     } = params;
+    if (name == 'token' || name == 'refreshToken') {
+        window.sessionStorage.setItem(name, content);
+        window.localStorage.setItem(name, content);
+    }
     name = keyName + name
     let obj = {
         dataType: typeof (content),
@@ -26,7 +30,6 @@
 /**
  * 获取localStorage
  */
-
 export const getStore = (params = {}) => {
     let {
         name,
@@ -118,4 +121,4 @@
         window.localStorage.clear()
     }
 
-}
\ No newline at end of file
+}
diff --git a/vue.config.js b/vue.config.js
index 88ddef0..c43e127 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -4,7 +4,7 @@
 
 module.exports = {
     //路径前缀
-    publicPath: "/",
+    publicPath: "/zhny-web",
     lintOnSave: true,
     productionSourceMap: false,
     chainWebpack: (config) => {
@@ -39,13 +39,15 @@
     },
     //开发模式反向代理配置,生产模式请使用Nginx部署并配置反向代理
     devServer: {
+        // 本地配置host生效
+        disableHostCheck:true,
         port: 1888,
         proxy: {
             '/api': {
                 //本地服务接口地址
-                // target: 'http://192.168.0.126:89',
+                target: 'http://192.168.0.207:89',
                 //远程演示服务地址,可用于直接启动项目
-                target: 'http://182.106.212.58:8013/api',
+                // target: 'http://182.106.212.58:8013/api',
                 ws: true,
                 pathRewrite: {
                     '^/api': '/'
@@ -53,4 +55,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}

--
Gitblit v1.9.3