首页 > 解决方案 > 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;
  }
}

标签: azureangular5

解决方案


推荐阅读