希望我能在这里得到一些澄清并在我去的时候学习一些东西。
所以我有一个AuthService
检查localStorage
键和其中的值的方法。这是一个可观察的和.next
返回的值。在 Guard 中,我引用了这个并且效果很好。但是,我注意到我在防护中没有重定向到登录页面,因此它会清空页面,当它没有被授权时就是这样。
这是我的代码。
isLoggedIn(): Observable<boolean> {
return new Observable((o) => {
try {
const cda = JSON.parse(localStorage.getItem('cda'));
if (cda && cda.token) {
console.log('Yes logged in');
o.next(true);
} else {
console.log('Not logged in');
o.next(false);
}
} catch (e) {
console.log('Catch - Not logged in');
o.next(false);
}
});
}
export class GuardGuard implements CanActivate {
constructor(
public auth: AuthService,
public router: Router,
) { }
canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
return this.auth.isLoggedIn();
}
}
我如何转换它Observable
,AuthService
以便我可以做类似的事情
if (!isLoggedIn) {
this.router.navigateByUrl('/login');
}