簡體   English   中英

如何在運行時配置MsAdalAngular6Module?

[英]How to configure MsAdalAngular6Module at runtime?

我正在使用這個微軟adal包裝器來管理角度單頁面應用程序中的身份驗證: https//github.com/manishrasrani/ms-adal-angular6

基於那里的文檔,我在編譯時配置所有各種選項,這樣可以按預期工作。

@NgModule({
imports: [
    MsAdalAngular6Module.forRoot({
      tenant: '<YOUR TENANT>',<-------------------------------- ADD
      clientId: '<YOUR CLIENT / APP ID>',<--------------------- ADD
      redirectUri: window.location.origin,
      endpoints: { <------------------------------------------- ADD
        "https://localhost/Api/": "xxx-bae6-4760-b434-xxx",
        ---
        ---
      },
      navigateToLoginRequestUrl: false,
      cacheLocation: '<localStorage / sessionStorage>', <------ ADD
    }),
    ---
    ---
  ],
  ---
  ---
})

但正如我所擁有的,並且需要獨特設置的多個環境(dev,test,prod等)的自動部署管道 - 我想改為運行時。 也就是說,我不想為我部署的每個環境重新編譯。

我按照本指南關於如何在rutime上從json文件加載設置: https ://juristr.com/blog/2018/01/ng-app-runtime-config/,它運行良好,但如何以這種方式加載值在運行時進入MsAdalAngular6Module?

我遇到了同樣的問題,我通過在自己的服務中創建庫中唯一需要的東西MsAdalAngular6Service來解決它。 所以我不需要導入MsAdalAngular6Module。 缺點是您不能再使用他們的AuthenticationGuard了。 但這應該不是一個大問題,這是一個簡單的if-else,只需查看他們的代碼即可。

我自己的服務看起來像這樣:

import { Injectable } from '@angular/core';
import { MsAdalAngular6Service } from "microsoft-adal-angular6";
import { ConfigurationService } from "../configuration.service";

@Injectable( {
    providedIn: 'root'
} )
export class MsAdalAdapterService {

    private _adalSvc: MsAdalAngular6Service;

    constructor( private configService: ConfigurationService ) {
        this._adalSvc = new MsAdalAngular6Service( configService.adalConfig );
    }

    get adalSvc(): MsAdalAngular6Service {
        return this._adalSvc;
    }
}

也許那對某人有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM