每次登录都重新请求用户信息查询接口并存入vuex
Showing
2 changed files
with
36 additions
and
17 deletions
| ... | @@ -11,6 +11,7 @@ router.beforeEach(async (to, from, next) => { | ... | @@ -11,6 +11,7 @@ router.beforeEach(async (to, from, next) => { |
| 11 | NProgress.start(); | 11 | NProgress.start(); |
| 12 | document.title = getPageTitle(to.meta.title); | 12 | document.title = getPageTitle(to.meta.title); |
| 13 | let hasAddDict = store.state.dict.addDict; | 13 | let hasAddDict = store.state.dict.addDict; |
| 14 | let hasUser = store.state.user.hasUser; | ||
| 14 | let hasAddRoute = store.state.permission.addRoutes; | 15 | let hasAddRoute = store.state.permission.addRoutes; |
| 15 | if (to.path == "/login") { | 16 | if (to.path == "/login") { |
| 16 | sessionStorage.removeItem("token"); | 17 | sessionStorage.removeItem("token"); |
| ... | @@ -19,6 +20,10 @@ router.beforeEach(async (to, from, next) => { | ... | @@ -19,6 +20,10 @@ router.beforeEach(async (to, from, next) => { |
| 19 | //判断token是否存在 | 20 | //判断token是否存在 |
| 20 | const hasToken = sessionStorage.getItem("token"); | 21 | const hasToken = sessionStorage.getItem("token"); |
| 21 | if (hasToken) { | 22 | if (hasToken) { |
| 23 | //请求用户信息 | ||
| 24 | if (!hasUser) { | ||
| 25 | store.dispatch("user/getUserInfo"); | ||
| 26 | } | ||
| 22 | //加载字典 | 27 | //加载字典 |
| 23 | if (!hasAddDict) { | 28 | if (!hasAddDict) { |
| 24 | store.dispatch("dict/generateDic"); | 29 | store.dispatch("dict/generateDic"); |
| ... | @@ -27,7 +32,7 @@ router.beforeEach(async (to, from, next) => { | ... | @@ -27,7 +32,7 @@ router.beforeEach(async (to, from, next) => { |
| 27 | next(); | 32 | next(); |
| 28 | } else { | 33 | } else { |
| 29 | //请求菜单 | 34 | //请求菜单 |
| 30 | const { result: getMenuData } = await getMenuInfo() || []; | 35 | const { result: getMenuData } = (await getMenuInfo()) || []; |
| 31 | const accessRoutes = await store.dispatch( | 36 | const accessRoutes = await store.dispatch( |
| 32 | "permission/generateRoutes", | 37 | "permission/generateRoutes", |
| 33 | getMenuData | 38 | getMenuData | ... | ... |
| 1 | import { getUserInfo } from '@/api/user' | 1 | import { getUserInfo } from "@/api/user"; |
| 2 | const state = { | 2 | const state = { |
| 3 | name: '', | 3 | hasUser: false, |
| 4 | avatar: 'https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png', | 4 | name: "", |
| 5 | } | 5 | avatar: "https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png", |
| 6 | userInfo: null, | ||
| 7 | }; | ||
| 6 | const mutations = { | 8 | const mutations = { |
| 7 | SET_NAME: (state, data) => { | 9 | SET_USERINFO: (state, data) => { |
| 8 | state.name = data.loginName | 10 | state.hasUser = true; |
| 9 | } | 11 | state.userInfo = data; |
| 10 | } | 12 | state.name = data.loginName; |
| 13 | }, | ||
| 14 | RESET_USER: (state) => { | ||
| 15 | state.hasUser = false; | ||
| 16 | }, | ||
| 17 | }; | ||
| 11 | 18 | ||
| 12 | const actions = { | 19 | const actions = { |
| 13 | getUserInfo ({ commit }) { | 20 | getUserInfo({ commit }) { |
| 21 | if (!state.hasUser) { | ||
| 14 | return new Promise(async (resolve) => { | 22 | return new Promise(async (resolve) => { |
| 15 | let { result: res } = await getUserInfo() | 23 | let { result: res } = await getUserInfo(); |
| 16 | commit('SET_NAME', res) | 24 | commit("SET_USERINFO", res); |
| 17 | resolve(true) | 25 | resolve(true); |
| 18 | }) | 26 | }); |
| 27 | }else{ | ||
| 28 | return | ||
| 29 | } | ||
| 30 | }, | ||
| 31 | resetdict({ commit }) { | ||
| 32 | commit("RESET_USER"); | ||
| 19 | }, | 33 | }, |
| 20 | } | 34 | }; |
| 21 | export default { | 35 | export default { |
| 22 | namespaced: true, | 36 | namespaced: true, |
| 23 | state, | 37 | state, |
| 24 | mutations, | 38 | mutations, |
| 25 | actions | 39 | actions, |
| 26 | } | 40 | }; | ... | ... |
-
Please register or sign in to post a comment