Angular Azure AD MSAL app.module.ts动态配置在不同环境中加载

Angular Azure AD MSAL app.module.ts动态配置在不同环境中加载,angular,azure-active-directory,Angular,Azure Active Directory,我正在使用MSAL,它是用于我的angular项目的microsoft身份验证库。在我的app.module.ts中,我在导入部分添加了msalModule,如下所示: 在开发过程中编码和计算如何使其工作时,这很好,但我需要为生产环境动态地将变量设置为不同的值,如redirectUri、postlogutredicturi、以及clientID。我尝试使用如下对象: Object.getClientID(),Object.getRedirectUri(),但我得到一个错误,即decorator中

我正在使用MSAL,它是用于我的angular项目的microsoft身份验证库。在我的
app.module.ts
中,我在导入部分添加了msalModule,如下所示:

在开发过程中编码和计算如何使其工作时,这很好,但我需要为生产环境动态地将变量设置为不同的值,如
redirectUri
postlogutredicturi
、以及
clientID
。我尝试使用如下对象:

Object.getClientID()
Object.getRedirectUri()
,但我得到一个错误,即decorator中不允许使用函数

在调用
app.module.ts
之前,是否有方法设置静态变量?或者有没有其他方法可以动态加载MSAL的正确环境变量

谢谢

salModule.forRoot({

  clientID: "<my-client-id>",

  authority: "https://tenant.b2clogin.com/tfp/tenant.onmicrosoft.com/B2C_1_Signin",

  redirectUri: "http://localhost:4200/dashboard",

  /* default is true */
  validateAuthority: false, 


  cacheLocation : "localStorage", 

  postLogoutRedirectUri: "http://localhost:4200/", 


  popUp: false,            
})
salModule.forRoot({
客户ID:“,
权限:“https://tenant.b2clogin.com/tfp/tenant.onmicrosoft.com/B2C_1_Signin",
重定向URI:“http://localhost:4200/dashboard",
/*默认值为true*/
验证权限:false,
cacheLocation:“本地存储”,
postLogoutRedirectUri:“http://localhost:4200/", 
弹出窗口:false,
})

我认为您面临的问题与异步提供程序有关

我在MSAL上遇到了同样的问题,我的解决方法是禁用aot并使用全局范围,这不是一个优雅的解决方案,但它可以工作(我希望我记住所有步骤):

  • 在HTML页面的head部分中,加载带有
    的自定义js,该文件的内容应该如下:
    window.MY_CONF={MY_VAR:'MY VAR value here'}

  • angular.json
    文件中的配置中将aot设置为false

  • 在角度模块中,使用
    MsalModule.forRoot导入MSAL(窗口['MY_CONF'].MY_VAR)

  • 现在,您可以在启动构建任务之前替换
    config.js
    ,并获得依赖于环境的MSAL配置


    注意:本文使用
    useFactory
    特性以角度的方式实现相同的结果,但AFAIK Msal lib不支持这一点。这里有一个特定的github问题,您可能想检查一下:

    我认为您面临的问题与异步提供程序有关

    我在MSAL上遇到了同样的问题,我的解决方法是禁用aot并使用全局范围,这不是一个优雅的解决方案,但它可以工作(我希望我记住所有步骤):

  • 在HTML页面的head部分中,加载带有
    的自定义js,该文件的内容应该如下:
    window.MY_CONF={MY_VAR:'MY VAR value here'}

  • angular.json
    文件中的配置中将aot设置为false

  • 在角度模块中,使用
    MsalModule.forRoot导入MSAL(窗口['MY_CONF'].MY_VAR)

  • 现在,您可以在启动构建任务之前替换
    config.js
    ,并获得依赖于环境的MSAL配置

    注意:本文使用
    useFactory
    特性以角度的方式实现相同的结果,但AFAIK Msal lib不支持这一点。这里有一个特定的github问题,您可能想检查一下: