Javascript 如何为adal-angular6配置生成动态数据
我目前正在连接AAD和azure graph api,获取我所需的所有内容,这非常棒。我的问题是我的“adalConfig”属性是这样硬编码的: 在app.module>导入中:Javascript 如何为adal-angular6配置生成动态数据,javascript,angular,azure,adal,Javascript,Angular,Azure,Adal,我目前正在连接AAD和azure graph api,获取我所需的所有内容,这非常棒。我的问题是我的“adalConfig”属性是这样硬编码的: 在app.module>导入中: c.MsAdalAngular6Module.forRoot({ tenant: '080werg-1e3r-5dnb-8c3b-e37ttrr8ee8', clientId: '080werg-080werg-080werg-080werg-080werg',
c.MsAdalAngular6Module.forRoot({
tenant: '080werg-1e3r-5dnb-8c3b-e37ttrr8ee8',
clientId: '080werg-080werg-080werg-080werg-080werg',
redirectUri: window.location.origin,
endpoints: {
"https://cloudcrp-client.azurewebsites.net": "080werg- 80werg-
080werg- 080werg- 080werg",
},
navigateToLoginRequestUrl: false,
}),
这对我来说是非常糟糕的,因为我们有几个客户,他们每个人都需要不同的信息。
我想做的是从服务器上获取具有正确详细信息的信息。因此,基本上是以异步方式使用.forRoot
我发现这篇文章:
我认为这与我想要实现的目标有很大关系,但我就是想不出来。所以我终于做到了,毕竟这并不难。我将介绍所有“adal”配置的步骤。 请参阅以下文章,这篇文章帮助很大: app.module.ts:
export let adalConfig
将使用上述函数(在“提供程序”部分中)为提供程序数组提供adalConfig变量
export function loadConfigurations(connectionService: ConnectionService) {
return () => connectionService.getConfigs().then(((adalConficObj: azureActiveDirectoryModel)=> {
adalConfig = {
tenant: adalConficObj.Tenant,
clientId: adalConficObj.ClientID,
redirectUri: window.location.origin,
endpoints: {
[adalConficObj.EndPoint]: adalConficObj.ObjectID,
},
navigateToLoginRequestUrl: false,
}
}));
}
在上面的函数中,我返回一个函数,该函数解析一个承诺(我将在APP_初始值设定项中使用此函数,它需要一个承诺-否则您将得到一个错误)
这个承诺来自我的connectionService,它在我的应用程序中负责连接到我们的服务器。getConfigs()简单如下:
getConfigs(): Promise<Object> {
return this.HttpClient.get(this.getURL('GetAzureActiveDirectoryconfiguration')).toPromise()
}
据我所知,MSADALangular6模块将使用providers数组中提供的变量来构造MSADALangular6服务(同样,使用forRoot()中的硬编码插入)
app.modules中的提供者数组:
{
provide: APP_INITIALIZER,
useFactory: loadConfigurations,
deps: [ConnectionService], // dependancy
multi: true
},
{
provide: 'adalConfig',
useFactory: getConfig,
deps: []
},
MsAdalAngular6Service
APP_初始值设定项基本上停止启动APP,直到useFactory中提供的功能完成。
下一节,我们将在adalConfig对象具有相关数据后,使用它“给”提供程序数组我们的adalConfig对象。我们提供变量本身(provide:'adalConfig'),因此此函数可以返回它(useFactory:getConfig,),因为getConfig()不使用传递给它的任何属性,所以deps:是冗余的
我真的希望这会有帮助,如果我有什么错误,请纠正我
有关更多信息,请参阅:
imports: [
c.MsAdalAngular6Module,
],
{
provide: APP_INITIALIZER,
useFactory: loadConfigurations,
deps: [ConnectionService], // dependancy
multi: true
},
{
provide: 'adalConfig',
useFactory: getConfig,
deps: []
},
MsAdalAngular6Service