要编写与 ASM 兼容的代码,开发人员须要应用 UserIdService 中的 takeUserId() 函数来确定 OCC 调用中应用的 userId。 这通常在一个服务中实现,该服务调度一个在无效负载中蕴含 userId 的 Action.
在 Spartacus 官网反对 ASM 场景之前,在代表通过身份验证的用户发送的申请中,OCC userId 是非凡的 current
OCC 用户,由 OCC_USER_ID_CURRENT 常量示意。 这能够在以下示例中看到:
/** * Retrieves user's addresses */ loadAddresses(): void { this.store.dispatch(new UserActions.LoadUserAddresses(OCC_USER_ID_CURRENT)); }
借助 Spartacus 中的官网 ASM 反对,确定 OCC userId 的正确办法是调用 UserIdService.takeUserId()。 应用后面的示例作为终点,Spartacus 当初确定 OCC 用户 ID,如下所示:
/** * Retrieves user's addresses */ loadAddresses(): void { this.userIdService.takeUserId().subscribe((userId) => { this.store.dispatch(new UserActions.LoadUserAddresses(userId)); }); }
小窍门:如果 OCC_USER_ID_CURRENT 间接在服务中应用,这意味着它可能会被对 takeUserId() 的调用所取代。
为了反对 Spartacus 中的 ASM 以及将来可能的其余性能,facade service 在调用各种操作时不能简略地应用这个 current
的非凡 userId. 须要利用一些逻辑来确定正确的 OCC userId 以传递给触发后端调用的操作。 因而,确定正确 OCC userId 的逻辑集中在 UserIdService 的 takeUserId() 函数中。
当客户反对代理登录时,ASM UI 中会呈现一个会话超时计时器。 默认值为 600 秒(10 分钟),但能够更改会话超时持续时间,如下例所示:
provideConfig({ asm: { agentSessionTimer: { startingDelayInSeconds: 720, }, },});
在此示例中,会话计时器的持续时间已设置为 720 秒(12 分钟)。
ASM客户搜寻中的后果数量能够自定义,如下例所示:
provideConfig({ asm: { customerSearch: { maxResults: 20, }, },});
在 Spartacus UI 启动 ASM 模式的办法:
要在 Spartacus 店面中调用 ASM UI,请将 ?asm=true
后缀增加到 URL。 例如,对于 electronics
示例商店,能够应用以下 URL 在主页上调用 ASM UI:
https://{hostname}/electronics-spa/en/USD/?asm=true
目前 Spartacus 临时不反对对 ASM 进行扩大。
ASM Customer Emulation 不适用于 Spartacus 中的 CMS 内容规定和限度。 如果存在通常基于客户 ID 或客户组 ID 利用的内容规定或限度,则在 ASM Customer Emulation 期间不会利用这些规定和限度。 相同,CMS endpoint 依据容许客户反对代理查看的内容提供内容。
为了显示 CMS 内容,Spartacus 依赖于 OCC 的 CMS endpoint. 发送申请时,CMS 端点不承受能够定义模仿用户(即客户)的 userId 参数。 CMS 端点仅将通过身份验证的用户辨认为申请的发送者,并且在 ASM Customer Emulation 会话中,通过身份验证的用户是客户反对代理(Customer Support Agent)。
OCC CMS 端点不承受 userId 参数,因而模仿客户不可能在 ASM 模仿会话期间触发 CMS 规定和限度(rules and restrictions).