导航到另一条路线后,能否继续在Angular中继续活动?

时间:2019-03-02 06:18:38

标签: angular angular-ui-router

在缺少身份验证的身份验证卫士中,我想显示Facebook登录名。不知道它是否可以执行router.navigate(['login'])中的canActivate来触发身份验证并返回登录的异步结果,还是会被router.navigate调用中断。在这里想知道适当和简单的流程。

1 个答案:

答案 0 :(得分:0)

是的,有可能。您还可以使用navigationByUrl转到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/

上找到