导航到另一条路线后,Can Angccate可以继续吗?

问题描述 投票:0回答:1

在身份验证失败时,我希望显示Facebook登录。不知道是否可以在router.navigate(['login'])中执行canActivate来触发身份验证并返回登录的异步结果,或者它会被router.navigate调用中断。想想这里适当而简单的流程。

angular angular-ui-router
1个回答
0
投票

对的,这是可能的。你也可以使用navigateByUrl来访问facebook

import { Injectable } from '@angular/core';
import { CanActivate, Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
import { UserService } from './user.service';

@Injectable()
export class AuthGuardService implements CanActivate {

  constructor(private userService: UserService, private router: Router) {}

  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
    if (this.userService.isValid()) {
      return true;
    } else {
      this.router.navigate(['/login'], {
        queryParams: {
          return: state.url
        }
      });
      return false;
    }
  }
}

代码片段转到/更多示例可以在:http://gnomeontherun.com/2017/03/02/guards-and-login-redirects-in-angular/上找到

© www.soinside.com 2019 - 2024. All rights reserved.