我在我的项目中将Framework7与Vue一起使用,并且遇到了一些基本问题。在我的f7路由中,我想在/
路由上设置防护措施,以检查用户是否已登录,然后重定向到/home/
,否则重定向到/login/
的登录屏幕。但是在当前设置下,重定向不起作用。有什么想法吗?
routes.js
const routes = [
{
path: '/',
async: function (routeTo, routeFrom, resolve, reject) {
if (isUserLoggedIn()) {
console.log(`*** redirecting to /home/`);
resolve({redirect: '/home/'});
} else {
console.log(`*** redirecting to /login/`);
resolve({redirect: '/login/'});
}
},
},
{
path: '/login/',
loginScreen: Login,
on: {
pageBeforeIn: function (event, page) {
console.log(`*** /login/ onBeforeIN`);
// never called
}
}
},
{
path: '/home/',
component: HomePage,
on: {
pageBeforeIn: function (event, page) {
console.log(`*** /home/ onBeforeIN`);
// never called
}
}
}
];
答案 0 :(得分:0)
弗拉德本人在F7论坛here上回答了问题:
async
不是用于重定向的,您需要为此使用路由的beforeEnter(https://framework7.io/docs/routes.html#route-before-enter-leave 1):
beforeEnter(to, from, resolve, reject) {
const router = this;
if (/* need redirect */) {
reject();
router.navigate('/another-path/');
return;
}
resolve();
}
除了这个问题外,我在登录路由中使用的是loginScreen: Login,
而不是component: Login,
。
进行两项更改确实可以解决问题。