#spartacus-storefront
Вопрос:
Я добавил конфигурацию аутентификации во время выполнения, и она настроена правильно, но по какой-то причине не использует эти значения конфигурации.
Вот что я сделал:
- Я ввел значения конфигурации с помощью поставщиков в своем модуле:
auth-config.module.ts
import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { AuthConfig, ConfigModule, CONFIG_INITIALIZER } from "@spartacus/core"; import { Auth0ConfigInitializer } from './auth0-config-initializer/auth0-config-initializer'; export const defaultAuthConfig: AuthConfig = { authentication: { client_id: 'override_me_please', client_secret: 'override_me_please', tokenEndpoint: '/oauth/token', loginUrl: '/authorize', OAuthLibConfig: { scope: 'openid profile email', responseType: 'code', disablePKCE: false, useHttpBasicAuth: true, redirectUri: window.location.href }, }, }; @NgModule({ declarations: [ ], imports: [ CommonModule, ConfigModule.withConfig(defaultAuthConfig) ], providers: [ { provide: CONFIG_INITIALIZER, useExisting: Auth0ConfigInitializer, multi: true, }, ], }) export class AuthConfigModule { }
- разрешите конфигурацию, вызвав веб-службу в Auth0ConfigInitializer
auth0-конфигурация-инициализатор.ts
import { Injectable } from '@angular/core'; import { ConfigInitializer, AuthConfig, ConfigInitializerService, OccEndpointsService } from '@spartacus/core'; import { Observable, throwError } from 'rxjs'; import { take, map, catchError } from 'rxjs/operators'; import { ResourceService, AuthOccResponse } from 'src/app/shared/resource-service'; // set the Auth0 config dynamically @Injectable({ providedIn: 'root' }) export class Auth0ConfigInitializer implements ConfigInitializer { // declare config keys that you will resolve readonly scopes = [ 'authentication.client_id', 'authentication.client_secret', 'authentication.baseUrl', 'authentication.logoutUrl', 'authentication.OAuthLibConfig.customQueryParams.audience' ]; readonly configFactory = () =gt; this.resolveConfig().toPromise(); constructor(protected configInit: ConfigInitializerService, protected resourceService: ResourceService, protected occEndpoints: OccEndpointsService) {} // resolve config values using getAuthConfig() web service protected resolveConfig(): Observablelt;AuthConfiggt; { return this.resourceService.getAuthConfig().pipe( take(1), map((resp: AuthOccResponse) =gt; { return { authentication: { client_id: resp.clientId, client_secret: resp.clientSecret, baseUrl: resp.baseUrl, logoutUrl: '/v2/logout', OAuthLibConfig: { customQueryParams: { audience: resp.baseUrl '/api/v2/' }, redirectUri: window.location.origin } } }; } ), catchError( err =gt; { console.log("Error getting Auth0 config from API", err); return throwError(err); }) ) } }
- Когда я веду журнал консоли, я вижу, что конфигурация аутентификации была перезаписана правильно. Однако, когда я нажимаю «Войти», он все еще использует старые значения конфигурации.
Не мог бы кто-нибудь, пожалуйста, объяснить, как правильно его вводить?
Спасибо