首页 > 其他分享 >Spartacus Storefront 里如何在 SmartEdit 访问环境下暂时禁用 Early login

Spartacus Storefront 里如何在 SmartEdit 访问环境下暂时禁用 Early login

时间:2023-06-14 12:32:30浏览次数:47  
标签:Spartacus SmartEditLauncherService 环境 Storefront Early 应用程序 SmartEdit isLaunched

关于 Spartacus Early login 的功能,即如果当前客户没有登录,则显示 login page. 而不是显示原始页面。

有的客户期望 Spartacus 在 SmartEdit 环境下预览时,暂时禁掉这个功能。

首先,开发人员应该分析与需求相关的所有后果并对安全威胁进行建模,然后考虑是否接受它们,例如:

  1. 某些功能页面(例如CPQ配置器)在用户未登录时无法正常工作。

  2. 可能会打开一个安全漏洞(例如,恶意用户可能模拟/伪造处于智能编辑环境,并能够打开仅限登录用户访问的您商店的页面)。

有关编写自定义代码的提示

需要覆盖方法 ProtectedRoutesGuard.canActivate(),以便在 SmartEdit 环境下始终返回true。

要检查是否处于 SmartEdit 环境,需要使用方法 SmartEditLauncherService.isLaunchedInSmartEdit()

SmartEditLauncherService的主要目的是检查当前应用程序是否在SmartEdit环境下运行,并提供相关的功能来管理与SmartEdit的交互。以下是对SmartEditLauncherService用法的详细介绍:

  1. 引入SmartEditLauncherService: 首先,在使用SmartEditLauncherService之前,您需要在Spartacus应用程序的相关组件或服务中引入它。您可以通过以下方式将SmartEditLauncherService导入到您的组件或服务中:

    import { SmartEditLauncherService } from '@spartacus/smartedit';
    
  2. 注入SmartEditLauncherService: 接下来,在组件或服务的构造函数中注入SmartEditLauncherService:

    constructor(private smartEditLauncherService: SmartEditLauncherService) { }
    
  3. 检查是否在SmartEdit环境下: 您可以使用SmartEditLauncherService的isLaunchedInSmartEdit()方法来检查当前应用程序是否在SmartEdit环境下运行。该方法返回一个布尔值,指示当前是否处于SmartEdit环境。示例如下:

    const isSmartEditLaunched = this.smartEditLauncherService.isLaunchedInSmartEdit();
    if (isSmartEditLaunched) {
      // 在SmartEdit环境下执行相关逻辑
    } else {
      // 在非SmartEdit环境下执行其他逻辑
    }
    

需要注意的是,SmartEditLauncherService只在Spartacus与SAP Commerce后端进行SmartEdit集成时才会使用。如果您的应用程序不涉及SmartEdit或与其他后端集成,SmartEditLauncherService可能不会发挥作用。

标签:Spartacus,SmartEditLauncherService,环境,Storefront,Early,应用程序,SmartEdit,isLaunched
From: https://blog.51cto.com/jerrywangsap/6476695

相关文章

  • SAP Spartacus UI 中的 CmsTicketInterceptor
    在SpartacusUI发起的OCCAPI请求的URL中,您可能会注意到一个名为cmsTicketId的字段。这个字段的含义与用途如下:cmsTicketId是一个标识符,用于关联SpartacusUI与SAPCommerceCloud后端CMS(ContentManagementSystem)的会话。CMS是一个用于管理网站内容的系统,如......
  • Spartacus base-url 访问 - CSR 端需要修改的配置
    假设我想把Spartacus的url后面增加customurl访问,比如以前通过https://spartacus-demo.eastus.cloudapp.azure.com/electronics-spa/访问,现在通过https://spartacus-demo.eastus.cloudapp.azure.com/electronics-spa/jerry访问。在CSR即客户端渲染模式下,在app.modul......
  • Spartacus product 明细页面的产品图片显示
    Spartacus产品明细页面(productdetailpage)如下图所示:其selector为cx-product-images:在Spartacus实现里,有两个Component都使用了这个selector,但是PDP页面使用的是前者,即下图图例1所示的ProductImageZoomProductImagesComponent:这个Component里有一个cx-m......
  • Spartacus 产品明细页面的 API 设计
    当我们使用如下url访问Spartacus产品明细页面时:https://spartacus-demo.eastus.cloudapp.azure.com/electronics-spa/en/USD/product/300938/PhotosmartE317DigitalCamera能观察到下面的OCCAPIcall:https://spartacus-demo.eastus.cloudapp.azure.com:8443/occ/v2/el......
  • Spartacus cart id 存储在浏览器 local storage 里面
    浏览器的localstorage(本地存储)是指浏览器提供的一种客户端存储机制,用于在用户的浏览器上存储少量数据。这些数据可以在同一域名下的所有页面之间共享,并且在浏览器关闭后也可以保留下来,直到被用户删除或达到存储上限。Localstorage是HTML5规范中引入的一种新的浏览器存储机......
  • Redis 为何使用Nearly LRU 算法淘汰数据
    Redis使用该LRU算法淘汰过期数据吗?不是的。由于LRU算法需要用链表管理所有的数据,会造成大量额外的空间消耗。大量的节点被访问就会带来频繁的链表节点移动操作,从而降低了Redis性能。Redis的内存空间是很宝贵的,而维护LRU的双向链表需要使用比较多的额外空间,至少需要一......
  • 让 Spartacus 服务器端渲染引入 long API 调用超时机制的两种配置方法
    两种方法,使用config.backend.timeout={浏览器:...,服务器:...},或者可以更具体地配置,即基于Request粒度,通过将HTTP_TIMEOUT_CONFIGHttpContextToken传递给AngularHttpClient的方法来针对每个具体请求进行配置。在SSR(Node.js)中,超时处理耗时过长的外部http调用是一项尤为......
  • 让 Spartacus 服务器端渲染引入 long API 调用超时机制的两种配置方法
    两种方法,使用config.backend.timeout={浏览器:...,服务器:...},或者可以更具体地配置,即基于Request粒度,通过将HTTP_TIMEOUT_CONFIGHttpContextToken传递给AngularHttpClient的方法来针对每个具体请求进行配置。在SSR(Node.js)中,超时处理耗时过长的外部http调用是一项尤为重......
  • SAP Emarsys 和 SAP Spartacus 的集成
    要将WebExtendScriptsforEmarsys集成到SAPSpartacus中,可以按照以下步骤操作:在Spartacus项目的根目录中创建一个名为“emarsys”(或其他名称)的新文件夹,然后将EmarsysWebExtend脚本文件(例如12345.js)放入该文件夹中。在Spartacus项目的“index.html”文件中添加以下代码,以......
  • Spartacus 4.0 升级到 5.0 后 checkout library 的设计变化
    在Spartacus4.0中,通过从原始storefront库中提取checkout功能,创建了一个新的checkoutlibrary实现。然而,这个新的库只有一个包含所有结帐流程的入口点,即使它们未被使用(例如scheduledreplenishmentflow)。但是,在Spartacus5.0中,checkout库已进一步分离为不同的业务逻......