Explorar o código

获取token时模拟登录

wukai hai 6 meses
pai
achega
9fed4c8e74
Modificáronse 3 ficheiros con 99 adicións e 73 borrados
  1. 13 1
      src/api/login.js
  2. 10 7
      src/permission.js
  3. 76 65
      src/store/modules/user.js

+ 13 - 1
src/api/login.js

@@ -19,6 +19,18 @@ export function login(username, password, code, uuid) {
   })
 }
 
+// 登录方法
+export function loginSso() {
+  return request({
+    url: '/loginSso',
+    headers: {
+      isToken: false,
+      repeatSubmit: false
+    },
+    method: 'post'
+  })
+}
+
 // 注册方法
 export function register(data) {
   return request({
@@ -57,4 +69,4 @@ export function getCodeImg() {
     method: 'get',
     timeout: 20000
   })
-}
+}

+ 10 - 7
src/permission.js

@@ -49,14 +49,17 @@ router.beforeEach((to, from, next) => {
       }
     }
   } else {
-    // 没有token
-    if (whiteList.indexOf(to.path) !== -1) {
-      // 在免登录白名单,直接进入
+    useUserStore().loginSso().then(() =>{
       next()
-    } else {
-      next(`/login?redirect=${to.fullPath}`) // 否则全部重定向到登录页
-      NProgress.done()
-    }
+    });
+    // // 没有token
+    // if (whiteList.indexOf(to.path) !== -1) {
+    //   // 在免登录白名单,直接进入
+    //   next()
+    // } else {
+    //   next(`/login?redirect=${to.fullPath}`) // 否则全部重定向到登录页
+    //   NProgress.done()
+    // }
   }
 })
 

+ 76 - 65
src/store/modules/user.js

@@ -1,72 +1,83 @@
-import { login, logout, getInfo } from '@/api/login'
-import { getToken, setToken, removeToken } from '@/utils/auth'
+import {getInfo, login,loginSso, logout} from '@/api/login'
+import {getToken, removeToken, setToken} from '@/utils/auth'
 import defAva from '@/assets/images/profile.jpg'
 
 const useUserStore = defineStore(
-  'user',
-  {
-    state: () => ({
-      token: getToken(),
-      id: '',
-      name: '',
-      avatar: '',
-      roles: [],
-      permissions: []
-    }),
-    actions: {
-      // 登录
-      login(userInfo) {
-        const username = userInfo.username.trim()
-        const password = userInfo.password
-        const code = userInfo.code
-        const uuid = userInfo.uuid
-        return new Promise((resolve, reject) => {
-          login(username, password, code, uuid).then(res => {
-            setToken(res.token)
-            this.token = res.token
-            resolve()
-          }).catch(error => {
-            reject(error)
-          })
-        })
-      },
-      // 获取用户信息
-      getInfo() {
-        return new Promise((resolve, reject) => {
-          getInfo().then(res => {
-            const user = res.user
-            const avatar = (user.avatar == "" || user.avatar == null) ? defAva : import.meta.env.VITE_APP_BASE_API + user.avatar;
+    'user',
+    {
+        state: () => ({
+            token: getToken(),
+            id: '',
+            name: '',
+            avatar: '',
+            roles: [],
+            permissions: []
+        }),
+        actions: {
+            // 登录
+            login(userInfo) {
+                const username = userInfo.username.trim()
+                const password = userInfo.password
+                const code = userInfo.code
+                const uuid = userInfo.uuid
+                return new Promise((resolve, reject) => {
+                    login(username, password, code, uuid).then(res => {
+                        setToken(res.token)
+                        this.token = res.token
+                        resolve()
+                    }).catch(error => {
+                        reject(error)
+                    })
+                })
+            }, // 登录
+            loginSso() {
+                return new Promise((resolve, reject) => {
+                  loginSso().then(res => {
+                        setToken(res.token)
+                        this.token = res.token
+                        resolve()
+                    }).catch(error => {
+                        reject(error)
+                    })
+                })
+            },
+            // 获取用户信息
+            getInfo() {
+                return new Promise((resolve, reject) => {
+                    getInfo().then(res => {
+                        const user = res.user
+                        const avatar = (user.avatar == "" || user.avatar == null) ? defAva : import.meta.env.VITE_APP_BASE_API + user.avatar;
 
-            if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组
-              this.roles = res.roles
-              this.permissions = res.permissions
-            } else {
-              this.roles = ['ROLE_DEFAULT']
+                        if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组
+                            this.roles = res.roles
+                            this.permissions = res.permissions
+                        } else {
+                            this.roles = ['ROLE_DEFAULT']
+                        }
+                        this.id = user.userId
+                        this.name = user.userName
+                        this.avatar = avatar
+                        resolve(res)
+                    }).catch(error => {
+                        reject(error)
+                    })
+                })
+            },
+            // 退出系统
+            logOut() {
+                return new Promise((resolve, reject) => {
+                    logout(this.token).then(() => {
+                        this.token = ''
+                        this.roles = []
+                        this.permissions = []
+                        removeToken()
+                        resolve()
+                    }).catch(error => {
+                        reject(error)
+                    })
+                })
             }
-            this.id = user.userId
-            this.name = user.userName
-            this.avatar = avatar
-            resolve(res)
-          }).catch(error => {
-            reject(error)
-          })
-        })
-      },
-      // 退出系统
-      logOut() {
-        return new Promise((resolve, reject) => {
-          logout(this.token).then(() => {
-            this.token = ''
-            this.roles = []
-            this.permissions = []
-            removeToken()
-            resolve()
-          }).catch(error => {
-            reject(error)
-          })
-        })
-      }
-    }
-  })
+        }
+    })
 
 export default useUserStore