我有一个angular 6 application.New用户需要进行快速设置才能使用该应用程序。
我正在使用后端api检查用户状态,并查看用户是否已完成初始设置。
我在AppComponent::ngOnInit和LoginConponent::ngOnInit中调用此接口,如果用户正在访问/或其未经授权,则可以正常工作,因为在外部登录后,用户将被重定向到/login。
但是,如果用户在登录之后手动输入url,但在完成初始设置之前,用户将被重定向到/profile页面,并在后端api检查其状态并最终重定向到/quick-setup页面时看到该页面一秒钟。
有没有办法阻止angular在应用启动时自动路由?这样我就可以手动完成了?
我不需要也不想在每次路线改变时检查这个,只是在应用程序开始的时候!
我能以某种方式使用Resolve来做这件事吗?
我已经有了AuthGuard来检查身份验证状态,但每次路由更改时都会检查它,这不是我想要的
发布于 2019-02-16 19:25:44
好的,下面是我为实现这个功能所做的工作。
First in 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);
}https://stackoverflow.com/questions/54344456
复制相似问题