トークンを検証し、真偽の応答を返す単純なAuthGuardを作成しました。 APIサーバ(Express)とAuthサービスは正常に動作しますが、ユーザが何時でもログインにリダイレクトされるため、if (this.isValid())
にバグがあります。認証ガードが動作しないのはなぜですか? Angular
export class AuthGuard implements CanActivate {
constructor(private router: Router,
private _authService: AuthService) { }
canActivate() {
if (this.isValid()) {
return true;
} else {
// not logged in so redirect to login page
this.router.navigate(['/login']);
return false;
}
}
isValid(): boolean {
let isValid = false;
if (localStorage.getItem('currentUser')) {
this._authService.verifyToken().subscribe(validToken => {
isValid = validToken === true;
});
}
console.log(isValid);
return isValid;
}
}
ここで私のisValid
はこの問題を引き起こしていますか?
:上
詳細情報? 'IsValid'関数をデバッグしましたか?認証サービスは機能していますか? 'console.log(isValid);は何を表示しますか? –
コンソールログでisValidがtrueを示しています。私はエラーがなく、私の認証サービスが動作しています – Moshe