Как настроить MsAdalAngular6Module во время выполнения?
Я использую эту упаковку 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 во время выполнения?
0 ответов
У меня была такая же проблема, и я решил ее, создав единственную необходимую часть библиотеки, 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;
}
}
Может кому пригодится.