gpt4 book ai didi

javascript - canActive Angular 如何从身份验证中获取值 true false (用户是否登录)

转载 作者:行者123 更新时间:2023-12-02 23:18:02 25 4
gpt4 key购买 nike

如何检查用户是否登录,我用这个

ngOnInit() {
this.auth.subscribeLogger().subscribe(
(data: any) => {
this.checkUserLogin = data;
}
);
}

用于获取值 true 或 false,但我无法控制台记录它,我知道这是错误的,但是如果用户登录或不从 authservice 登录,我如何获取值?

这是文件history.guard.ts

import { Injectable } from '@angular/core';
import { Router, CanActivate } from '@angular/router';
import { AuthService } from 'app/core/service';

@Injectable({
providedIn: 'root'
})
export class HistoryGuard implements CanActivate {
checkUserLogin: boolean;
constructor(
private router: Router,
private auth: AuthService,
){}

ngOnInit() {
this.auth.subscribeLogger().subscribe(
(data: any) => {
this.checkUserLogin = data;
}
);
}

canActivate() {
if(this.checkUserLogin){
return true;
}
else{
return this.router.navigate(['mypage']);
}
}
}

最佳答案

CanActivate 可以返回一个 Observable。

还没有测试过,但类似这样的东西应该可以工作:

constructor(private router: Router, private auth: AuthService){}

canActivate(route: ActivatedRouteSnapshot, routeState: RouterStateSnapshot): Observable<boolean|UrlTree>|Promise<boolean|UrlTree>|boolean|UrlTree {
return this.auth.subscribeLogger().pipe(
map(isUserLoggedin => {
if (!isUserLoggedin) {
this.router.navigate(['mypage']);
}
return isUserLoggedin;
});
}

关于javascript - canActive Angular 如何从身份验证中获取值 true false (用户是否登录),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57087116/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com