在以 angular 访问特定路由之前,我想提供服务器端身份验证。
我有一个实现 CanActivate 的 AuthGuard 和一个服务 AuthService。authService 已经有一个private loggedIn: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(null);
视图订阅以了解用户是否登录。我真的不知道我的方法是否错误,但它似乎不起作用。
这是我在 auth.guard.ts 中的内容:
canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot) : Observable<boolean> {
return this.authService.isAuthenticated().map((isLoggedIn) => {
if (isLoggedIn) {
return true;
} else {
this.router.navigate(['/login']);
return false;
}
})
}
Run Code Online (Sandbox Code Playgroud)
这是 auth.service.ts:
@Injectable()
export class AuthService {
private loggedIn: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(null);
constructor(
private router: Router,
private http: HttpClient
) {
}
get isLoggedIn() {
return this.loggedIn.asObservable();
}
isAuthenticated() : Observable<boolean> {
const headers …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 macOS 上安装 Angular。我安装了 npm 5.6.0 和节点 8.11.1。我试过了sudo npm install -g @angular/cli,它似乎安装了它。但是,当我输入时ng --version,我得到:
未知错误:ReferenceError:赋值中的左侧无效
编辑:我也试过这个,没有效果:
npm uninstall -g angular-cli
npm cache clean或npm cache verify(如果 npm > 5)
npm install -g @angular/cli@latest