#aurelia
#аурелия #aurelia
Вопрос:
Конвейер основного маршрутизатора моего приложения перенаправляет на страницу входа, если пользователь не вошел в систему.
Он отлично работает для большинства страниц, но когда указанная страница содержит дочерний маршрутизатор, логика, похоже, не попадает в конвейер основного маршрутизатора, предотвращая перенаправление (а также не отображая страницу).).
главный маршрутизатор:
configureRouter (rc: RouterConfiguration, router: Router) {
this.router = router;
rc.addAuthorizeStep(this.requireAuth);
const auth = { authenticated: true, needsCurrentOrg: true };
const loginRoute = {
route: 'login/:token?',
name: 'login',
moduleId: PLATFORM.moduleName('views/login/login'),
};
rc.map([
{
route: [ROOT_PAGE, DASHBOARD_PAGE],
name: DASHBOARD_PAGE,
moduleId: PLATFORM.moduleName('views/dashboard/dashboard'),
settings: auth
},
{
route: CREDENTIALS_PAGE,
name: CREDENTIALS_PAGE,
moduleId: PLATFORM.moduleName('views/credentials/credentials-root'),
settings: auth
})]
}
учетные данные маршрутизатора:
configureRouter (rc: RouterConfiguration) {
rc.map([
{
route: '',
name: 'credentials-list',
moduleId: PLATFORM.moduleName('./credentials-grid'),
}
]);
}
Поэтому, если я нажимаю /#/dashboard
без входа в систему, я перенаправляюсь на /login
, но ничего не происходит, если я нажимаю /#/credentials
: пустая страница, перенаправления нет. Я вставил a debugger
в requireAuth
код промежуточного продукта, и в первом случае он включается, во втором случае он не проходит
Ответ №1:
Наконец-то выявлена проблема, по некоторым причинам похоже, что LoadRouteStep
этап конвейера (внутренний для AppRouter
) пытался загрузить ViewModel целевого маршрутизатора subrouter.
Поскольку у этой ViewModel был некоторый код в конструкторе, этот код терпел неудачу, создавая ошибку и останавливая конвейер, так и не достигнув перенаправления.
Исправление состояло в том, чтобы переместить этот код конструктора в activate
функцию для ViewModel.
Комментарии:
1. Я думаю, это как-то связано с тем фактом, что вы используете пустой маршрут для списка учетных данных. Вы можете это проверить?