【发布时间】:2020-08-02 14:00:44
【问题描述】:
希望我能在这里得到一些澄清,并在我去的时候学习一些东西。
所以我有一个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');
}
【问题讨论】:
-
stackblitz.com/edit/… 这里是工作演示...
标签: angular typescript angular-observable auth-guard