我有一个Angular 6应用程序。新用户需要快速设置才能使用该应用程序。
我正在使用后端api检查用户状态,并查看用户是否已完成初始设置。
我在AppComponent::ngOnInit
和LoginConponent::ngOnInit
中都调用了这个api,如果用户访问/
或未经授权,则可以正常使用,因为在外部登录后,用户将被重定向到{{1 }}。
但是,如果用户在登录后但在完成初始设置之前像/login
那样手动输入url,则用户将被重定向到/profile
页面,并在大约一秒钟的时间内看到该页面后端api正在检查其状态并最终重定向到/profile
页。
有什么方法可以在应用启动时自动停止角度路由吗?所以我可以手动完成?
我不需要也不希望在每次更改路线时都检查一下,只是在应用程序启动时!
我可以为此使用Resolve
吗?
我已经有/quick-setup
来检查身份验证状态,但这将在每次路由更改时被检查,这不是我想要的
答案 0 :(得分:0)
好的,这就是我所做的工作。
app.component
中的第一名
ngOnInit(): void {
//always go to login page to authenticate and then redirect to the requested url
this.authService.navigateToLogin();
}
navigateToLogin() {
if (!Util.checkUrl('/logout') && !Util.checkUrl('/signup'))
this.router.navigate(['/login'], { skipLocationChange: true });
}
在login.component
中,将location.pathname
存储在cookie中,以便登录后可以重定向到它
ngOnInit() {
if (!Util.checkUrl('/login') && !Util.checkUrl('/', true) && !Util.checkUrl('/#')) {
this.cookieService.set(COOKIE_LOGIN_REDIRECT, location.pathname, 3600, '/');
}
this.authService.verify();
}
this.authService.verify();
与后端一起检查用户是否正常,然后重定向到cookie中存储的位置。
let redirect = this.cookieService.get(COOKIE_LOGIN_REDIRECT);
if (redirect) {
this.cookieService.delete(COOKIE_LOGIN_REDIRECT, '/');
redirect = redirect.replace(environment.baseHref, '');
return this.router.navigateByUrl(redirect);
}