Как настроить MsAdalAngular6Module во время выполнения? - PullRequest
0 голосов
/ 04 октября 2018

Я использую эту оболочку Microsoft 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 и т. д.), которые требуют уникальных настроек - я хочу вместо этого сделать эту среду выполнения.То есть я не хочу перекомпилировать для каждой среды, в которой я развертываюсь.

Я следовал этому руководству о том, как загрузить настройки из файла json в rutime: https://juristr.com/blog/2018/01/ng-app-runtime-config/, что хорошо работает, но как получить значения, загруженные таким образом в MsAdalAngular6Module во время выполнения?

1 Ответ

0 голосов
/ 05 марта 2019

У меня была та же проблема, и я решил ее, создав единственную нужную вещь из библиотеки, 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;
    }
}

Может быть, это полезнодля кого-то.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...