1

我已经建立了一个 loginPageGuard,如果它已经登录,它根本不会让用户登录页面。

假设用户开启

http://localhost:4200/#/testUrl

并试图去 http://localhost:4200/#/login

LoginPageGuard 按我的意愿工作,并且用户保持打开状态

http://localhost:4200/#/testUrl

问题是当用户登录并打开一个新选项卡并在浏览器中输入以下 URL

http://localhost:4200/#/login

应用程序不让用户登录页面,而是转到

http://localhost:4200/#/

我想要的是带给用户

http://localhost:4200/#/someDesiredUrl 

有没有办法做到这一点?谢谢

登录页面卫士

@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
  }
4

1 回答 1

0

只需使用注入的路由器实例导航到someDesiredUrl

canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
      //Authentication logic here
      //If already logged in
      this.router.navigateByUrl('someDesiredUrl');
}
于 2017-11-08T12:19:13.030 回答