Javascript 如何为adal-angular6配置生成动态数据

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',

我目前正在连接AAD和azure graph api,获取我所需的所有内容,这非常棒。我的问题是我的“adalConfig”属性是这样硬编码的:

在app.module>导入中:

         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