登录后,auth0会将我重定向回angular2上的回拨网址。如何让它转到我给路由的路径而不重定向到回调网址。
答案 0 :(得分:1)
我一直在解决同样的问题..看来你有几个选择。
这很容易实现,但Auth0建议不使用此功能,因为浏览器不一致。 (即一些IE and Chrome/Firefox on iOS)
就像在锁定选项对象中添加标记一样简单
var lockOptions = {
auth: {
redirect: false
}
}
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);
}
然后在你的auth回调中:
// 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']);
}
});