angular - isAuthenticated 调用上的角度刷新访问令牌
问题描述
我正在尝试jwt
使用refresh token
. 我有这个方法在我的authenticationService
:
isAuthenticated(): boolean {
const jwtHelper = new JwtHelperService();
return !jwtHelper.isTokenExpired(this.getAccessToken());
}
我想像这样使用它:
isAuthenticated(): Observable<boolean> {
const jwtHelper = new JwtHelperService();
if (!jwtHelper.isTokenExpired(this.getAccessToken())) {
return of(true);
}
return this.refreshToken(); // returns Observable<boolean>
}
因此,我希望始终拥有有效的访问令牌,而不是在每次 api 调用时刷新它(这可能更好),因为*ngIf
如果用户未登录,我会使用它来不显示某些组件。那么,如何进行一次调用refreshToken
所有来电isAuthenticated
?
解决方案
所以,我决定使用这篇文章中的 flow 。我添加了app initialzer
(调用refreshToken
)并替换isAuthenticated
为
isAuthenticated(): boolean {
return this.gerUserData() != null;
}
我认为这个流程更好,因为如果没有带有有效负载的 api 调用,每次过期时刷新令牌都是无用的。
推荐阅读
- jquery - 加载视图时,ASP.NET MVC 在控制台(浏览器开发工具)中抛出错误“jQuery tDatePicker 不是函数”
- r - 在整个分隔符处拆分,但不是分隔符的每个组件
- javascript - ReferenceError:在 asp.net razor 页面中进行 Ajax api 调用时未定义 $
- r - 如果我有来自该行的特定 ID,R 中是否有函数可以输出数据帧的一行中的所有值
- azure-blob-storage - Azure blob_service.list_blob() 返回空生成器
- windows - 如何使用命令提示符或批处理文件从字符串中删除某些字符?
- python - MacOS终端命令'python3 file.py'进入目录而不是从PATH执行脚本文件
- react-native - expo-permissions 为所有权限返回 Unrecognized Permissions
- angular - 对 Angular 路由器更改的调度操作
- asp.net-core - 路由特定中间件 - NET CORE