3

我正在使用这个 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 从 json 文件加载设置:https ://juristr.com/blog/2018/01/ng-app-runtime-config/效果很好,但是如何以这种方式加载值在运行时进入 MsAdalAngular6Module?

4

1 回答 1

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;
    }
}

也许这对某人有用。

于 2019-03-05T16:34:17.967 回答