angular - Angular 9:调用 API 来检查会话是否未过期的 Guard
问题描述
在我的 Angular 应用程序的某些页面上,我想验证会话未过期。
我在本地存储中有令牌,所以在 AuthService 我有:
isUserAuthenticated(): Observable<boolean> {
const token = localStorage.getItem('token');
if(token) {
return this.http.get<any>(this.apiUrl.getUser, {headers: {'X-Auth-Token': token}}).pipe(
tap(data => {return true}),
catchError(this.handleError)
);
} else {
return of(false);
}
}
首先:上面的代码正确吗?
我的 canActivate 函数应该是什么样子的?
我试过这个:
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot):Observable<boolean>|boolean {
return this.authService.isUserAuthenticated().pipe(map(User => {
return (User) ? true : false;
}));
}
但是当令牌过期时它会给我错误。
解决方案
推荐阅读
- android - Android 错误:多个库的包名称为“android.support.graphics.drawable”
- sql - 图书馆数据库
- numpy - 如何获取任何图像的文件流的 Numpy 数组
- javascript - 三.js计算STL文件网格体积
- three.js - AR.js 尝试将场景同步到指南针北方
- c++ - 获取浏览器进程 ID,然后在 C++ 程序中使用它
- php - php文件功能不适用于长csv文件
- assembly - 8086 - 在 8086 微处理器中声明数组后的汇编、mov 操作
- c# - 如何使用最速下降法 C# 获得 2 个非线性函数/方程系统的目标来解决它?
- keyboard - Flutter中动态更新keyboardType