如何使用 beforeEnter 从 children 重定向到特定路由
How can I redirect to a specific route from a children using beforeEnter
根据下面的路由配置,如果用户未通过身份验证,我的应用程序应重定向到“/login”:
const ifAuthenticated = (to, from, next) => {
if(Store.getters.isAuthenticated) {
next();
return;
}
else
{
next({ path: '/login' });
}
}
export default new Router({
routes: [
{
path: '/login',
name: 'Login',
component: DsLogin
},
{
path: '/',
name: 'home',
component: DsHome,
beforeEnter: (to, from, next) => {
ifAuthenticated(to, from, next);
},
},
{
path: '/other',
name: 'other',
component: DsOther,
beforeEnter: (to, from, next) => {
ifAuthenticated(to, from, next);
},
},
{
path: '/demand-history',
name: 'demand history',
component: DsDemandHistory,
beforeEnter: (to, from, next) => {
ifAuthenticated(to, from, next);
},
redirect: '/demand-history/1/all/all/all',
children: [
{
path: ':page/:type/:state/:owner',
name: 'demand history filtered',
props: true,
beforeEnter: (to, from, next) => {
ifAuthenticated(to, from, next);
}
}
]
}
]
})
当我导航到路径“/”或“/other”时,它运行良好。
但是当我导航到路径“/demand-history/1/all/all/all”时,我被重定向到“/demand-history/1/all/all/login”
使用next({ name: 'Login' })
也不行
我应该如何设法重定向到“/login”?
感谢
重定向不是由方法 ifAuthenticated
发起的,而是在我的代码中的上游。
拦截器捕获到 401 错误并使用 Router.push('login')
重定向到登录
用 Router.push({ name: 'Login' })
修改代码解决了我的问题。
根据下面的路由配置,如果用户未通过身份验证,我的应用程序应重定向到“/login”:
const ifAuthenticated = (to, from, next) => {
if(Store.getters.isAuthenticated) {
next();
return;
}
else
{
next({ path: '/login' });
}
}
export default new Router({
routes: [
{
path: '/login',
name: 'Login',
component: DsLogin
},
{
path: '/',
name: 'home',
component: DsHome,
beforeEnter: (to, from, next) => {
ifAuthenticated(to, from, next);
},
},
{
path: '/other',
name: 'other',
component: DsOther,
beforeEnter: (to, from, next) => {
ifAuthenticated(to, from, next);
},
},
{
path: '/demand-history',
name: 'demand history',
component: DsDemandHistory,
beforeEnter: (to, from, next) => {
ifAuthenticated(to, from, next);
},
redirect: '/demand-history/1/all/all/all',
children: [
{
path: ':page/:type/:state/:owner',
name: 'demand history filtered',
props: true,
beforeEnter: (to, from, next) => {
ifAuthenticated(to, from, next);
}
}
]
}
]
})
当我导航到路径“/”或“/other”时,它运行良好。 但是当我导航到路径“/demand-history/1/all/all/all”时,我被重定向到“/demand-history/1/all/all/login”
使用next({ name: 'Login' })
也不行
我应该如何设法重定向到“/login”?
感谢
重定向不是由方法 ifAuthenticated
发起的,而是在我的代码中的上游。
拦截器捕获到 401 错误并使用 Router.push('login')
用 Router.push({ name: 'Login' })
修改代码解决了我的问题。