我正在使用此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
}),
---
---
],
---
---
})
但是,由于我拥有自动部署管道,并且具有需要唯一设置的多个环境(开发,测试,生产等)-我想改为运行时。也就是说,我不想为部署到的每个环境重新编译。
我遵循了本指南,了解如何在rutime:https://juristr.com/blog/2018/01/ng-app-runtime-config/上从json文件中加载设置,效果很好,但是如何在运行时将值以这种方式加载到MsAdalAngular6Module中?
答案 0 :(得分: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;
}
}
也许对某人有用。