如果用户从新选项卡输入网址,则导航到某个页面

时间:2017-11-08 11:51:26

标签: angular routes angular-ui-router canactivate

我已经构建了一个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
  }

1 个答案:

答案 0 :(得分:0)

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

canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
      //Authentication logic here
      //If already logged in
      this.router.navigateByUrl('someDesiredUrl');
}