Auth0 перенаправляет обратно на URL после логина angular2
После входа в систему auth0 перенаправляет меня обратно на URL обратного вызова на angular2. Как я могу заставить его идти по пути, который я дал к маршрутизации, не перенаправляя на URL обратного вызова.
1 ответ
Я работал над этой же проблемой.. Кажется, у вас есть несколько вариантов.
а) Использовать всплывающий режим
Это легко реализовать, но Auth0 рекомендует не использовать это из-за несоответствий браузера. (а именно некоторые IE и Chrome/Firefox на iOS)
Это так же просто, как добавить флаг к вашему объекту параметров блокировки
var lockOptions = {
auth: {
redirect: false
}
}
б) Сохранить состояние в LocalStorage
Auth0 предлагает сохранить состояние в LocalStorage, если вы хотите разрешить пользователям возобновить работу с того места, где они остановились.
Так что, непосредственно перед запуском lock.show()
Вы можете сохранить текущий URL/ путь / состояние / и т.д. в локальном хранилище. В моем случае я использую authGuard.
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean> {
if (this.authService.isLoggedIn) {
return Promise.resolve(true);
}
// Store the attempted URL for redirecting after auth
localStorage.setItem('redirectUrl', state.url);
// Navigate to the login page
this.router.navigate([`${environment.loggedOutRoute}`]);
return Promise.resolve(false);
}
Затем внутри вашего аутентификационного обратного вызова:
// On authentication
this.lock.on('authenticated', (authResult: any) => {
// Save the token in LS
localStorage.setItem('token', authResult.idToken);
// Hide the login modal
this.lock.hide();
// Redirect the user
const redirectUrl: string = localStorage.getItem('redirectUrl');
if (redirectUrl) {
this.router.navigate([redirectUrl]);
} else {
this.router.navigate(['/overview']);
}
});