azure - AZURE AD - 自动获取 angular5 网站的刷新令牌
问题描述
我连续几天在谷歌上搜索,找不到任何接近手头问题的东西。我们网站的用户必须在闲置 1 小时后重新登录。业务要求静默刷新访问令牌,以便用户无需每天多次登录。
如何做到这一点?
我们的环境:
天蓝色广告 - 免费版
网站 - angular5 和 adal-angular5
这是一项服务(消除了不必要的噪音)
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import { Adal5Service, Adal5HTTPService } from 'adal-angular5';
import { adal } from 'adal-angular';
const config: adal.Config = {
tenant: environment.tenant,
clientId: environment.clientId,
endpoints: environment.endpoints
}
@Injectable()
export class AuthService {
constructor(private adalService: Adal5Service,
private httpAdal: Adal5HTTPService,
private http: Http) {
this.adalService.init(config);
this.adalService.handleWindowCallback();
if (!this.adalService.userInfo.authenticated) {
this.adalService.login();
}
}
sendRequest(url: string): Observable<any> {
const resource = this.adalService.GetResourceForEndpoint(url);
let authenticatedCall: Observable<any>;
if (resource) {
if (this.adalService.userInfo.authenticated) {
authenticatedCall =
this.adalService.acquireToken(resource).flatMap(token => {
const headers = new Headers();
headers.append('Authorization', 'Bearer ' + token);
return this.http.request(url, headers)
});
} else {
this.adalService.login();
}
}
return authenticatedCall;
}
}
解决方案
推荐阅读
- python - 使用 OpenCV lib 读取图像时出现问题
- javascript - 未找到 Vue JS 模块(日期选择器)
- sap-cloud-sdk - 如何对 ODataQuery 和 ODataQueryBuilder 进行单元测试?
- javascript - 在刚刚退出全屏的视频元素(以及其他视频)上运行功能
- proxy - 我如何知道我是否在 NTLM 代理后面?
- wordpress - 根据产品类别更改 WooCommerce 缺货消息(产品页面)
- amazon-web-services - 在 Amazon Web Services S3 中保护存储桶和资源访问?
- ssl - nginx 和 bitnamis dockerized osclass 的 HTTP/HTTPS 重定向问题
- java - 无法创建自定义 BOM。项目构建失败并出现不可解析的导入 POM:找不到工件
- mysql - QMSQL:不能将不兼容的 Qt 库(版本 0x50b03)与此库(版本 0x50c05)混合