如何在 SAP Spartacus 店面上使用令牌调用自定义端点?

How to call custom endpoints with token on SAP Spartacus storefront?

我是 SAP Spartacus 店面的新手,我正在尝试进行自定义 API 调用以检查 CNPJ 在客户数据库中是否有效。 我的后端已准备就绪,需要根据请求接收令牌 header。

但我在 Spartacus 文档中找不到如何使用默认令牌服务或拦截器进行此调用。

谁能帮帮我? 谢谢你的时间,祝你有美好的一天。

您可以查看 Spartacus Session Management 文档。

  • 如果您需要发送用户令牌,默认情况下它包含在 header 对“occ”的每个请求。这意味着如果你想 对于不在 OCC 中的端点具有相同的行为,您将需要 更具体地说,扩展和覆盖 AuthHttpHeaderService isOccUrl 方法,以便它 returns 对于 occ 端点和 您的外部端点。它看起来像这样:
[...]
@Injectable({
  providedIn: 'root',
})
export class CustomAuthHttpHeaderService extends AuthHttpHeaderService {
  constructor(
    protected authService: AuthService,
    protected authStorageService: AuthStorageService,
    protected oAuthLibWrapperService: OAuthLibWrapperService,
    protected routingService: RoutingService,
    protected occEndpoints: OccEndpointsService,
    protected globalMessageService: GlobalMessageService
  ) {
   super(...);
   }

   protected isOccUrl(url: string): boolean {
    return url.includes(this.occEndpoints.getBaseUrl()) || url === 'my-custom-url';
  }
}

注射剂:

{
 provide: AuthHttpHeaderService,
 useClass: CustomAuthHttpHeaderService
}
  • 如果您需要客户端令牌,您只需放置以下内容 请求 header 中的字符串 'cx-use-client-token'。如果它是 那里并且用户是匿名的,ClientTokenInterceptor 将 添加客户端令牌。应按如下方式使用:
[...]

let headers = new HttpHeaders({
  'Content-Type': 'application/json',
});
headers = InterceptorUtil.createHeader(USE_CLIENT_TOKEN, true, headers);

// Your request
return this.http.post('/your-request-endpoints', { headers });