fix(router): preserve static routes during session reset
This commit is contained in:
1 parent
81ccaa6e01
commit
3c474ad135
5 files changed
+12
-12
No files matched your search
@@ -200,7 +200,7 @@ const handleAuthorized = () => {
|
||||
confirmButtonText: t('login.relogin'),
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
resetRouter() // 重置静态路由表
|
||||
resetRouter() // 重置动态路由表
|
||||
isRelogin.show = false
|
||||
// 重新加载后由路由守卫向服务端确认会话
|
||||
window.location.href = window.location.href
|
||||
|
||||
@@ -50,7 +50,7 @@ async function goLogin() {
|
||||
await userStore.loginOut().catch(() => {})
|
||||
// 登出后清理
|
||||
tagsViewStore.delAllViews()
|
||||
resetRouter() // 重置静态路由表
|
||||
resetRouter() // 重置动态路由表
|
||||
lockStore.resetLockInfo()
|
||||
replace('/login')
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import router, { resetRouter } from './router'
|
||||
import router, { addDynamicRoute, resetRouter } from './router'
|
||||
import type { RouteRecordRaw } from 'vue-router'
|
||||
import { isRelogin } from '@/config/axios/service'
|
||||
import { useTitle } from '@/hooks/web/useTitle'
|
||||
@@ -55,7 +55,7 @@ router.beforeEach(async (to, _from, next) => {
|
||||
const permissionStore = usePermissionStoreWithOut()
|
||||
permissionStore.generateRoutes(userStore.getMenus)
|
||||
permissionStore.getAddRouters.forEach((route) => {
|
||||
router.addRoute(route as unknown as RouteRecordRaw)
|
||||
addDynamicRoute(route as unknown as RouteRecordRaw)
|
||||
})
|
||||
|
||||
next({ path: to.path, query: to.query, hash: to.hash, replace: true })
|
||||
|
||||
@@ -11,14 +11,14 @@ const router = createRouter({
|
||||
scrollBehavior: () => ({ left: 0, top: 0 })
|
||||
})
|
||||
|
||||
export const resetRouter = (): void => {
|
||||
const resetWhiteNameList = ['Redirect', 'Login', 'NoFind', 'Root']
|
||||
router.getRoutes().forEach((route) => {
|
||||
const { name } = route
|
||||
if (name && !resetWhiteNameList.includes(name as string)) {
|
||||
router.hasRoute(name) && router.removeRoute(name)
|
||||
const removeDynamicRoutes: Array<() => void> = []
|
||||
|
||||
export const addDynamicRoute = (route: RouteRecordRaw): void => {
|
||||
removeDynamicRoutes.push(router.addRoute(route))
|
||||
}
|
||||
})
|
||||
|
||||
export const resetRouter = (): void => {
|
||||
removeDynamicRoutes.splice(0).forEach((removeRoute) => removeRoute())
|
||||
}
|
||||
|
||||
export const setupRouter = (app: App<Element>) => {
|
||||
|
||||
@@ -35,7 +35,7 @@ export const usePermissionStore = defineStore('permission', {
|
||||
this.addRouters = routerMap.concat([
|
||||
{
|
||||
path: '/:path(.*)*',
|
||||
redirect: '/404',
|
||||
component: () => import('@/views/Error/404.vue'),
|
||||
name: '404Page',
|
||||
meta: {
|
||||
hidden: true,
|
||||
|
||||
Reference in new issue
Block a user