微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MSAL 2 在 Angular 中的动态配置

如何解决MSAL 2 在 Angular 中的动态配置

对于我的 Angular (v12) 应用程序,我使用 MSAL 进行身份验证,但我遇到了配置问题。

在配置中,我有tenantId和app Id来初始化MSAL。

我无法使用带有 environment.ts 的标准 Angular 配置切换,因为它无法在构建后步骤中更改。

相反,我尝试加载一个 json 文件并在应用启动时使用 APP_INITIALIZER 回调调用,如本文所述:How to initialize msal configurations using APP_INITIALIZER

我对其进行了一些修改,因为 MsalAngularConfiguration 在 MSAL v2 中不再存在。

但它不起作用,在调用 ConfigService.init 之前调用MSALInstanceFactory(由 AppComponent 调用,因为它依赖于 MsalGuardConfiguration)。

我也尝试在 ConfigService 函数中传递 msalConfigFactory,但参数未定义。

我也尝试将代码作为 json 导入,但它不起作用,因为我在构建时获取了值。

有什么想法吗?

解决方法

似乎我在提供程序中双重使用了我的 AppConfigService。 我使用本地工厂做了同样的事情,它有效:

export function EnvConfigurationFactory(httpBackend: HttpBackend) {

  return () => {
    let http = new HttpClient(httpBackend);
    return http.get('assets/configuration/environment.json')
            .toPromise()
            .then((resp) => {
              for (var key in resp) {
                environment[key] = resp[key];
              }
            })
  }
} 

我使用 HttpBackend 而不是 HttpClient,因为配置了 HTTP_INTERCEPTORS 并使用我尝试设置的设置。 我直接用 environment.json 文件设置环境对象的值。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。