共计 1663 个字符,预计需要花费 5 分钟才能阅读完成。
要编写与 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).