diff --git a/src/router/index.js b/src/router/index.js index 08968a6..5a31c96 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -113,7 +113,8 @@ router.beforeEach(async (to, from, next) => { } else if (to.meta.global) { next(); } else { - next({ name: 'Login' }); + next(false); + store.dispatch('auth/logout', to.fullPath); } }); diff --git a/src/store/modules/auth.js b/src/store/modules/auth.js index 2545877..867d116 100644 --- a/src/store/modules/auth.js +++ b/src/store/modules/auth.js @@ -72,20 +72,22 @@ const actions = { } return res; }, - login: async ({ commit }, data) => { + login: async ({ commit, rootGetters }, data) => { let res = await login(data); if (res) { ElMessage.success('登陆成功'); commit('local/setToken', res.token, { root: true }); - router.push('/'); + router.push(rootGetters['layout/returnUrl']); } else { ElMessage.error('登陆失败'); } return res; }, - logout: ({ commit }) => { + logout: ({ commit }, returnUrl) => { + returnUrl = returnUrl || router.currentRoute.value.fullPath; commit('local/setToken', null, { root: true }); - router.push({ name: 'Login' }); + commit('layout/setReturnUrl', returnUrl, { root: true }); + router.push({ name: 'Login', query: { returnUrl } }); }, getPermission: async ({ commit }) => { let res = await getPermission({ systemCode: 'msb_shop_admin' }); diff --git a/src/store/modules/layout.js b/src/store/modules/layout.js index 6d8081a..b99a0d4 100644 --- a/src/store/modules/layout.js +++ b/src/store/modules/layout.js @@ -9,6 +9,7 @@ const state = () => ({ breakcrumbList: [], autoRouter: false, notKeepAliveList: [], + returnUrl: null, }); const getters = { asideList: (state, getters, rootState) => { @@ -19,6 +20,13 @@ const getters = { }, collapseMenu: (state, getters) => state.collapseMenu || getters.menuList.length < 2, activeAsideName: (state, getters) => getters.asideList.find((item) => item.name === state.activeAside)?.meta.title, + returnUrl: (state) => { + let res = state.returnUrl || '/'; + if (res === '/login') { + res = '/'; + } + return res; + }, }; const mutations = { setCollapseMenu: (state, data) => (state.collapseMenu = data), @@ -54,6 +62,7 @@ const mutations = { setBreakcrumbList: (state, data) => (state.breakcrumbList = data), setAutoRouter: (state, data) => (state.autoRouter = data), setNotKeepAliveList: (state, data) => (state.notKeepAliveList = data), + setReturnUrl: (state, data) => (state.returnUrl = data), }; const actions = {}; export default {