当前位置: 首页 > Web前端 > HTML

如何在SAPSpartacus中编写ASM-Compatible代码

时间:2023-03-28 14:32:00 HTML

要编写ASM-compatible代码,开发人员需要使用UserIdService中的takeUserId()函数来确定OCC调用中使用的userId。这通常是在分派Action的服务中完成的,该Action在有效负载中包含userId。在Spartacus正式支持ASM场景之前,在代表认证用户发送的请求中,OCCuserId是特殊的当前OCC用户,由OCC_USER_ID_CURRENT常量表示。这可以在以下示例中看到:/***检索用户的地址*/loadAddresses():void{this.store.dispatch(newUserActions.LoadUserAddresses(OCC_USER_ID_CURRENT));}借助Spartacus中官方对ASM的支持,确定OCC获取userId的正确方式是调用UserIdService.takeUserId()。使用前面的示例作为起点,Spartacus现在确定OCC用户ID如下:/***检索用户的地址*/loadAddresses():void{this.userIdService.takeUserId().subscribe((userId)=>{这个.store.dispatch(newUserActions.LoadUserAddresses(userId));});}提示:如果在服务中直接使用OCC_USER_ID_CURRENT,这意味着它可能会被调用takeUserId()替换。为了支持Spartacus中的ASM以及未来可能的其他功能,门面服务在调用各种操作时不能简单的使用当前这个特殊的userId。需要应用一些逻辑来确定正确的OCCuserId以传递给触发后端调用的操作。因此,判断正确的OCCuserId的逻辑集中在UserIdService的takeUserId()函数中。当客户支持代理登录时,会话超时计时器会出现在ASMUI中。默认值为600秒(10分钟),但可以更改会话超时持续时间,如下例所示:provideConfig({asm:{agentSessionTimer:{startingDelayInSeconds:720,},},});在此示例中,会话超时计时器持续时间已设置为720秒(12分钟)。ASM客户搜索的结果数量可以自定义,如下例所示:provideConfig({asm:{customerSearch:{maxResults:20,},},});在SpartacusUI中启动ASM模式的方法:在Spartacus店面中要调用ASMUI,请将?asm=true后缀添加到URL。例如,对于电子样品店,可以使用以下URL在主页上调用ASMUI:https://{hostname}/electronics-spa/en/USD/?asm=true目前Spartacus不支持ASM扩展。ASMCustomerEmulation不适用于Spartacus中的CMS内容规则和限制。如果存在通常基于客户ID或客户组ID应用的内容规则或限制,则这些规则和限制将不会在ASM客户仿真期间应用。相反,CMS端点根据允许客户支持代理看到的内容来提供内容。为了显示CMS内容,Spartacus依赖于OCC的CMS端点。发送请求时,CMS端点不接受可以定义模拟用户(即客户)的userId参数。CMS端点仅将经过身份验证的用户识别为请求的发送者,并且在ASM客户仿真会话中,经过身份验证的用户是客户支持代理。OCCCMS端点不接受userId参数,因此模拟客户端不可能在ASM模拟会话期间触发CMS规则和限制。