我目前正在编写一个公开AuthModule
的库,其中包含AuthService
,用于使用oidc-client-js
处理OAuth2身份验证。但是,我希望使用的应用程序指定OAuth客户端的配置。我知道我可以将配置传递到forRoot
的{{1}}方法,如下所示:
AuthModule
在AuthModule.forRoot({
applicationNamespace: 'ConsumingApp',
clientId: 'consuming.app'
});
方法中,我想使用传入的配置提供服务实例。
我设法通过在forRoot
对象上设置传入的属性来破解它。然后,我使用window
中的window.clientId
和window.applicationNamespace
的引用。
AuthService
有没有更好的方法来实现这个目标?
答案 0 :(得分:1)
这可以使用注入令牌以下列方式完成。
第1步:为传入的配置对象创建InjectionToken
,如下所示:
export const AUTH_CONFIG = new InjectionToken<AuthConfig>('authConfig');
第2步:将令牌注入AuthService
构造函数
第3步:将配置对象传递给模块的forRoot函数
public static forRoot(authConfig: AuthConfig): ModuleWithProviders
步骤4:使用传入的配置作为注入令牌的值
{ provide: AUTH_CONFIG, useValue: authConfig }