Angular 角度运行时配置不与用户管理器创建一起使用(oidc客户端)
我不是一个棱角分明的专家,但我需要解决这个问题,所以任何帮助都将不胜感激 我们已经建立了一个angular应用程序(使用angular 7.x版)。由于此应用程序将在全球部署,我选择不对我们的环境变量使用environment.X.ts,因为我必须多次构建该应用程序才能发布。相反,我发现一篇文章解释了如何通过JSON文件设置“运行时”配置,该文件将在应用程序安装到用户设备上后下载 今天,我们开始集成oidc客户端,但遇到了一个奇怪的问题。当我们尝试访问运行时配置以设置用户管理器设置时,我们会收到数据为空的错误。这让我们感到奇怪,因为我们正在将这个AppConfigureService毫无问题地注入其他部分。是否有人使用oidc客户端设置了angular应用程序,该客户端使用动态加载的配置 下面是我们目前正在使用的一些代码 app config.service.tsAngular 角度运行时配置不与用户管理器创建一起使用(oidc客户端),angular,identityserver4,openid-connect,Angular,Identityserver4,Openid Connect,我不是一个棱角分明的专家,但我需要解决这个问题,所以任何帮助都将不胜感激 我们已经建立了一个angular应用程序(使用angular 7.x版)。由于此应用程序将在全球部署,我选择不对我们的环境变量使用environment.X.ts,因为我必须多次构建该应用程序才能发布。相反,我发现一篇文章解释了如何通过JSON文件设置“运行时”配置,该文件将在应用程序安装到用户设备上后下载 今天,我们开始集成oidc客户端,但遇到了一个奇怪的问题。当我们尝试访问运行时配置以设置用户管理器设置时,我们会收到
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
@Injectable()
export class AppConfigService {
private appConfig;
constructor(private http: HttpClient) { }
loadAppConfig() {
return this.http.get('/assets/config/appConfig.json')
.toPromise()
.then(data => {
this.appConfig = data;
});
}
getConfig() : AppConfig {
return this.appConfig;
}
}
export class AppConfig {
auth_authority: string;
auth_redirect_uri: string;
auth_post_logout_redirect_uri: string;
oc_api_url: string;
comm_api_url: string;
}
验证服务.ts为了节省空间,省略了一些代码
import { Injectable } from '@angular/core';
import { UserManager, UserManagerSettings, User } from 'oidc-client';
import { fail } from 'assert';
import { AppConfigService, AppConfig } from '../services/app-config.service';
import { environment } from '../environments/environment';
import { debug } from 'util';
@Injectable()
export class AuthService {
private appConfigService: AppConfigService = null;
private manager: UserManager = null;
private user: User = null;
constructor(private appConfig: AppConfigService) {
this.appConfigService = appConfig;
this.appConfigService.loadAppConfig()
.then(()=>{
this.manager = new UserManager(getClientSettings(this.appConfigService.getConfig()))
this.manager.getUser().then(user => {
this.user = user;
});
});
.
.
.
}
.
.
.
}
export function getClientSettings(appConfig: AppConfig): UserManagerSettings {
return {
authority: appConfig.auth_authority,
client_id: environment.auth_client_id,
redirect_uri: appConfig.auth_redirect_uri,
post_logout_redirect_uri: appConfig.auth_post_logout_redirect_uri,
response_type: "id_token token",
scope: environment.auth_scope,
filterProtocolClaims: true,
loadUserInfo: true
//automaticSilentRenew: true,
//silent_redirect_uri: 'http://localhost:4200/silent-refresh.html'
};
}