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

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

时间:2023-06-22 10:22:20浏览次数:57  
标签:Spartacus SmartEditLauncherService 环境 Storefront Early 应用程序 login SmartEdit

关于 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,应用程序,login,SmartEdit
From: https://www.cnblogs.com/sap-jerry/p/17497541.html

相关文章

  • SAP Spartacus 和 Sticky session 相关的话题
    当Commerce后端运行多个Pods/节点时,当连续的请求过快到达时,后端将无法在集群中发送缓存失效通知。此外,如果多个请求分散到多个节点上,会产生延迟和不必要的资源消耗。Spartacus尽可能与单个后端进行交互,以服务于单个客户端。这通常被称为stickysession.Stickysession(粘滞会......
  • 关于 Spartacus 服务器端渲染的 404 Not found 页面处理
    当启动Spartacus时,路由由Router逻辑处理。将评估四种不同类型的路由:路由应由自定义路由路径处理;客户添加了硬编码路由,并且我们应该优先考虑这些路由。路由是PLP(产品列表页)或PDP(产品详情页)。路由是CMS(内容管理系统)内容页面。路由是未知的(404页面未找到)。当向Sparta......
  • TensorFlow09.1 神经网络-其他训练Tricks(Early Stopping和Dropout)
    Tricks▪EarlyStopping▪Dropout▪StochasticGradientDescent1Earlystopping我们走到最大指的时候我们可以提交stop掉,防止它overfitting。1.1How-To▪Validationsettoselectparameters(选择一个参数)▪Monitorvalidationperformance(检测变量的表现)▪......
  • 用 SmartEdit 打开 SAP Commerce Cloud Storefront 时动态在 body 标签注入的 css cla
    当我们使用SAPSmartEdit打开SAPCommerceCloudStorefront时,在商户网站中,还必须在body标签中作为CSS类名包含以下唯一标识符:smartedit-page-uid-:指定指定目录和目录版本的唯一页面标识符。这是为了支持旧版实现而必需的。smartedit-page-uuid-:指定页面的全局唯一标识符(UU......
  • SAP Spartacus UI 中的 CmsTicketInterceptor
    在SpartacusUI发起的OCCAPI请求的URL中,您可能会注意到一个名为cmsTicketId的字段。这个字段的含义与用途如下:cmsTicketId是一个标识符,用于关联SpartacusUI与SAPCommerceCloud后端CMS(ContentManagementSystem)的会话。CMS是一个用于管理网站内容的系统,如......
  • Spartacus 项目中 scss 文件里的 mergeAll 函数
    在SCSS文件中,并没有内置的mergeAll()函数。mergeAll()函数是一个JavaScript/TypeScript中的数组操作方法,用于将多个数组合并为一个数组。它不是SCSS或Sass的特定功能。然而,SCSS和Sass提供了一些强大的功能来处理样式和样式表。这些功能包括嵌套规则、变量、混合......
  • SAP Spartacus 开源项目中 $skipComponentStyles 的作用介绍
    SAPSpartacus和Angular开发的前端应用中的$skipComponentStyles是用于跳过组件样式加载的一个标志。在理解$skipComponentStyles的作用之前,我们先来了解一下SAPSpartacus。SAPSpartacus是一个开源的电子商务前端框架,用于构建可扩展、可定制的电子商务网站。它基于An......
  • Spartacus Storefront 里如何在 SmartEdit 访问环境下暂时禁用 Early login
    关于SpartacusEarlylogin的功能,即如果当前客户没有登录,则显示loginpage.而不是显示原始页面。有的客户期望Spartacus在SmartEdit环境下预览时,暂时禁掉这个功能。首先,开发人员应该分析与需求相关的所有后果并对安全威胁进行建模,然后考虑是否接受它们,例如:某些功能页......
  • 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......