我已经构建了一个loginPageGuard,如果用户已经登录,就不会让用户登录页面。
让我们说用户在
http://localhost:4200/#/testUrl
并试图去
http://localhost:4200/#/login
LoginPageGuard按我想要的方式工作,用户留在
http://localhost:4200/#/testUrl
问题是用户登录并打开新标签页并在浏览器中输入以下网址
http://localhost:4200/#/login
应用程序不允许用户登录页面,但转到
http://localhost:4200/#/
我想要的是带给用户
http://localhost:4200/#/someDesiredUrl
有没有办法实现这个目标?感谢
LoginPageGuard
@Injectable()
export class LoginPageGuard implements CanActivate {
constructor(private router: Router, private authenticationService: AuthenticationService) {
}
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
return this.authenticationService.isAuthorized()
.map((user:EUser)=>{
return !user.isAuthorized;
})
}
}
app.routing.ts
{
path: 'login',
canActivate:[LoginPageGuard],
component: LoginComponent
}
答案 0 :(得分:0)
只需使用注入的路由器实例导航到someDesiredUrl
?
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
//Authentication logic here
//If already logged in
this.router.navigateByUrl('someDesiredUrl');
}