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