其他安全增强功能

此版本的安全性改进包括:

  • CAPTCHA ​保护已添加到以下产品区域:

    • 下单店面页面和REST和GraphQL端点
    • 与付款相关的REST和GraphQL端点。

    默认情况下,将禁用对这些附加页面的验证码保护。 它可以在管理员中启用,其启用方式与验证码涵盖的其他页面相同。 此保护已添加为反暴力机制,以保护商店免受梳理攻击。 请参阅验证码

  • 支持Cookie的SameSite属性。 为了支持新Cookie分类系统的Google Chrome实施,已更新处理Cookie的应用程序类以支持SameSite Cookie属性。 此属性默认设置为Lax,但可以显式覆盖。

  • 增强的安全扫描工具。 Adobe已与Sanguine Security(防止数字盗版的领先者)合作,将其超过8700个威胁签名的数据库集成到安全扫描工具中。 这种合作关系将使商家能够通过主动检测恶意软件并减少误报,实时了解其网站的安全状态。 商家可以通过访问https://account.magento.com/scanner注册该工具。 有关详细信息,请参阅使用增强的安全扫描工具保护您的店面博客文章。

注意
从2.3.2版本开始,我们将分配并发布索引式常见漏洞和暴露(CVE)编号,其中会包含外部方报告给我们的每个安全错误。 这使用户能够更轻松地识别其部署中未解决的漏洞。 您可以在CVE了解有关CVE标识符的更多信息。

基础架构改进

此版本包含对核心质量的增强,这些改进改进了Framework以及以下功能区域的质量:客户帐户、目录、CMS、OMS、导入/导出、促销和定位、购物车和结账以及暂存和预览。

性能改进

  • 减少Redis与Magento之间的网络传输大小。 现在在执行bin/magento di:compile命令期间生成插件列表配置。 此配置信息会根据作用域写入生成的元数据文件夹。 以前,此信息存储在缓存中。 产生的性能改进包括减少网络缓存大小和执行时间(对于许多情形)。

  • 增强的消息队列使用者性能。 三个新的配置设置支持减少使用者队列CPU消耗。 这些可选参数可增强对使用者的控制并节省服务器资源。 有关maxIdleTimesleeponlySpawnWhenMessageAvailable参数的说明,请参阅配置消息队列

  • 已改进bin/magento命令的执行时间

Adobe Stock集成

此版本包括Adobe Stock集成v2.1.0。

新建媒体集

新媒体集现在默认在Admin中启用。 商家现在可以对媒体集中的图像执行以下操作:

  • 批量删除图像

  • 通过识别店面未使用的重复图像和图像优化媒体存储

  • 按图像使用的店面区域筛选图像,包括产品和类别内容以及CMS块

  • 使用图像元数据

    • 查看上传到媒体集的图像中的元数据
    • 编辑图像元数据(标题、描述和关键字)
    • 按图像的元数据搜索图像

GraphQL

此版本添加了GraphQL涵盖以下功能的功能:

有关这些增强功能的详细信息,请参阅GraphQL开发人员指南

PWA Studio

PWA Studio v8.0.0引入了以下新增功能和增强功能:

  • 对适用于设计令牌、排版规则、颜色、核心组件和页面布局的Venia样式指南进行了更新。

  • 改进了Venia迷你购物车体验

  • 对Venia店面上的多个区域设置和本地化内容的初始支持

  • 对Venia店面的“我的帐户”体验进行了多项改进

有关PWA Studio版本及其兼容版本的列表,请参阅兼容性。 有关增强功能和错误修复的信息,请参阅PWA Studio版本

功能测试框架(MFTF)

MFTF 3.1.0现已可用。 请参阅功能测试框架更改日志

供应商开发的扩展

有关此版本功能和更改的更新,请参阅以下文章:

修复的问题

我们已在2.4.1核心代码中修复了数百个问题。

安装、升级、部署

  • 在CLI命令中使用依赖于Store模块API的第三方扩展进行安装不会再失败。 以前,应用程序显示此错误消息: The default website isn't defined. Set the website and try again。 这是2.4.0中的一个已知问题。
  • bin/magento setup:di:compile不再引发致命错误。 以前,在您第一次运行此命令时,应用程序会引发错误,但第二次执行会导致编译成功。
  • Magento\Framework\Encryption\Encryptor上声明插件后,升级不再失败。
  • 运行bin/magento setup:static-content:deploy后未部署某些主题时,应用程序现在会显示信息性错误消息。 以前,当部署成功完成但未部署所有包时,应用程序不会显示错误。 当在启用并行处理的情况下执行命令,并且每个主题需要部署的时间超过指定的最大执行时间时,尽管未部署主题,但此命令可以成功完成。
  • 网站范围更改时,Klarna付款的​ 使用默认 ​复选框(商店 > 配置 > 销售 > 付款方式 > Klarna)现在仍按预期保持选中状态。
  • 升级不再导致Galera群集突然失败。 以前,Galera群集在升级后立即重新索引后突然退出。 在升级过程中,索引表被更改,引擎从MEMORY更改为InnoDB。 此时,这些表的内容在Galera群集的节点之间变得不同步。 GitHub-25334
  • 禁用PageBuilder模块不再影响产品页面的呈现。 以前,在禁用模块时,产品页面上的自定义布局会消失,并且应用程序会显示一个空白页面。
  • 使用编辑器安装Magento Open Source后,您现在可以使用bin/magento sampledata:deploy按预期部署示例数据。 以前,应用程序引发此错误: Git installations must deploy sample data from GitHub; see [Clone sample data Git repositories](../../../installation/sample-data/git-repositories.md) for more informationAndrii Beziazychnyi在拉取请求中提交的修复27481GitHub-19481
  • 运行bin/magento config:show <vendor_module>/general/value现在会按预期返回0或空字符串。 以前,它返回Configuration for path: "vendor_module/general/value" doesn't existVadim Malesh在拉取请求中提交的修复28549GitHub-23290
  • bin/magento setup:static-content:deploy --language=all现在部署店面上使用的所有语言以及管理员用户配置的所有语言(未设置语言参数时)。 (en_US始终默认部署。)Anton Evers在拉取请求中提交的修复289224}。GitHub-29218
  • 目录图像帮助程序初始化现在使用产品模型,而不是DataObject在拉取请求29435 ​中由jmonteros422提交的修复。 GitHub-1711
  • 管理员用户现在可以保存空的​ 客户令牌生命周期(小时) ​字段(管理员​ 商店 > 配置 > 服务 > OAuth > 访问令牌过期)。 GitHub-29502

Adobe Stock集成

  • Adobe Stock图库图像详细信息页面的​ 用于 ​字段现在可以准确识别该图像是否与产品关联。 Nazar Klovanych在拉取请求中提交的修复28798GitHub-1474
  • \Magento\MediaGallery\Model\ResourceModel\Keyword\SaveAssetsKeywords::execute现在会删除指向参数上未指定的关键字的链接,并在编辑图像详细信息时删除关键字标记时插入新链接。 在拉取请求29207 ​中由jmonteros422提交的修复。 GitHub-1391
  • 当商家为以前保存的、未授权的Adobe Stock图像单击​ 许可证 ​时,应用程序显示的Login failed消息不再包含HTML标记。 由您的用户在拉取请求中提交的修复29398GitHub-1684
  • 单击“图像详细信息”页面的​ 用于 ​部分中的链接现在会显示一个网格,该网格可显示按图像过滤的所有实体。 此外,还可正确设置和显示资源筛选器。 以前,应用程序未在​ 应用的过滤器 ​部分中显示资产标题。 Nazar Klovanych在拉取请求中提交的修复29367GitHub-1694
  • 当映像未被使用时,应用程序不再显示映像“详细信息”页面的​ 用于 ​部分。 Nazar Klovanych在拉取请求中提交的修复29367GitHub-1699
  • 现在可以使用图像详细信息​ 用于 ​部分上的资源筛选器按预期检查Assets。 Nazar Klovanych在拉取请求中提交的修复29367GitHub-1704
  • 有关不同实体(例如,pagecategory)使用的图像的信息现在已在图像详细信息页面中列出并已更正。 Nazar Klovanych在拉取请求中提交的修复29367GitHub-1747
  • 禁用媒体库后,当商家尝试保存产品及其相关图像时,应用程序不再引发异常。 Nazar Klovanych在拉取请求中提交的修复29492GitHub-1750
  • 单击媒体库中图像的“用于”部分中的链接,现在会按预期打开按图像过滤的实体网格。 以前,图像标题不会显示在网格的已应用过滤器部分中。 Nazar Klovanych在拉取请求中提交的修复29429GitHub-1694
  • 现在,商家删除标记并保存图像详细信息后,应用程序将删除Adobe Stock图像的标记。 以前,在刷新页面之前不会删除标记。 Honeymay Louiese Ignacio在拉取请求中提交的修复29400GitHub-1703

Amazon Pay

  • Amazon Pay现在会先检查用户是否已登录,然后再呈现付款选项。

  • 多重身份验证问题和放弃的购物车已得到解决。

  • Amazon Pay现在会在电子邮件和其他显示的位置中正确填充store name。 如果Amazon Pay配置中的​ 商店名称 ​字段为空,则扩展将检索该商店的默认名称(即您在Admin中提供的商店名称)。

  • 已解决拒绝方案的本地化/翻译问题。 显示的文本不再总是英文。

捆绑产品

  • 当您尝试在安装了清单但Magento_InventoryBundleProduct模块已禁用的部署中创建产品时,应用程序不再引发异常。
  • 现在,该应用程序可以正确计算包含捆绑产品的订单的离线退款。
  • 现在,当为简单产品分配了层价格时,迷你购物车会显示捆绑产品的正确价格。 GitHub-22807
  • 商家现在可以为捆绑产品创建贷项通知单,无需退货即可提供退款。 以前,应用程序会引发错误。 Dzung Nguyen在拉取请求中提交的修复27455GitHub-23440
  • 当购物者将捆绑产品添加到购物车而未选择所需选项时,应用程序不再显示冗余的验证消息。 Dzung Nguyen在拉取请求中提交的修复27455GitHub-23440

由Michal Derlatka在拉取请求中提交的修复29256GitHub-26110

缓存

  • 本地缓存存储现在保留在​ 存储 > 配置 > 常规 > Web > 默认Cookie设置 ​中设置的时间段。 以前,Cookie的过期日期硬编码为一天,这会使其与此设置不同步。 因此,欢迎消息不会在预期持续时间内保留返回的客户信息。
  • 在管理员中编辑产品后,不再为不相关的产品清除全页缓存。 GitHub-25670

购物车和结账

  • “比较”和“最近比较”产品列表中的产品现在按预期工作。 以前,当比较列表展开时,应用程序不显示产品,即使部分指出该列表包含产品。
  • 在客户的​ 管理购物车 ​页面的​ 按SKU添加到购物车 ​部分中,删除 ​按钮现在可在选择多行时按预期工作。
  • 当您尝试按SKU订购产品时,如果输入的数字与有效的SKU匹配,但这两个数字的大小写不同,则应用程序不会再引发错误。 以前,当您在​ 我的帐户 > Order by SKU ​上输入的SKU与有效的SKU不完全匹配时,应用程序会引发错误。
  • 现在,如果客户发货地址位于允许国家/地区列表上标识的国家/地区,并且该列表仅包含该国家/地区,则在结账时默认会选择客户的发货地址。 以前,应用程序未选择地址作为默认地址,并显示以下错误消息: Please specify a regionId in shipping address
  • 商户现在可以在​ 营销 > 购物车价格规则 > 添加新规则 ​的“操作”选项卡中启用​ 申请配送金额(当对整个购物车应用​ 固定金额折扣 ​时)。 GitHub-24422
  • 当购物者在开始结帐并导航到storefront主页后尝试取消设置持久性Cookie时,应用程序不再引发异常。 以前,当购物者单击​ 不是您时?主页上的 ​链接,应用程序引发此异常: The shipping address is missing. Set the address and try againGitHub-24218
  • 现在,当客户将缺货产品添加到购物车时,应用程序会显示添加到购物车成功消息。 以前,会添加产品,但应用程序不会显示成功消息。
  • 自定义地址属性现在按预期包含在结账工作流中为付款步骤显示的表单中。
  • 州/省/地区 ​输入框现在已在​ 我的帐户 > 通讯簿 > 添加新地址 ​上按预期启用。
  • 购物车页面上的新​ 显示“清除购物车”按钮 ​配置设置控制了在购物车查看页面上显示​ 清除购物车 ​按钮。 默认情况下,此设置处于禁用状态。 Pavlo Sydorenko在拉取请求中提交的修复27917GitHub-28705
  • 当购物车包含可下载的产品时,如果禁用了​ 可共享 ​和​ 如果购物车包含可下载的项目,则禁用访客签出 ​设置,则访客签出现在按预期禁用。 Rani Priya在拉取请求中提交的修复23972GitHub-23971
  • 当购物者从客户帐户侧边栏将产品添加到购物车时,应用程序显示的成功消息现在包含指向购物者的购物车的链接。 Ajith在拉取请求中提交的修复27977GitHub-29097
  • 现在,当您从购物车中删除多个项目时,应用程序显示的弹出消息可准确地描述您选择删除的实体的数量和类型。 Nazar Klovanych在拉取请求中提交的修复29490GitHub-1749
  • 现在,当访客用户完成结账时,应用程序会显示客户注册表单。
  • 自定义客户地址属性字段现在按预期显示在店面结账工作流中。
  • 现在,应用程序在结帐期间会检索当前客户组以获取有效报价。 以前,应用程序使用在首次将产品添加到购物车时处于活动状态的客户组,如果该客户组在结账前已被删除,则应用程序会引发错误。 Konstantin在拉取请求中提交的修复28902GitHub-29327

目录

  • 应用程序现在会在结帐前从购物车的购物车中删除禁用的产品。 以前,当购物者向购物车添加在结账前禁用的产品时,应用程序会从购物车中删除禁用的产品,但该产品仍保留在报价中,购物者无法结账。 GitHub-26680
  • 该应用程序现在会按预期排序畅销产品。 以前,产品计数和排序结果的分页都不正确。 GitHub-25955
  • 购物者现在可以通过单击比较产品侧边栏中的产品名称来打开产品的详细信息页面。 Eduard Chitoraga在拉取请求中提交的修复27451GitHub-21101
  • 当管理员删除类别时,children_count值现在保持为正。 以前,当管理员删除类别时,剩余类别的children_count为负数。 Vitaliy Prokopov在拉取请求中提交的修复28044GitHub-27969
  • 应用程序现在使用您在创建新产品时为page_layout属性选择的默认选项(配置 > Web > 默认布局 > 默认产品布局)。 以前,不会应用您选择的默认值。
  • 您现在可以成功地对库存产品库存执行成批活动。 以前,当您尝试对库存产品库存执行成批活动时,应用产品将显示一个空白页。 如果您在开发人员模式下对应用程序执行了此操作,则应用程序引发此错误: Notice: Undefined offset: 32000 in /Users/kodithuw/sites/m23inventory/inventory/InventoryCatalogAdminUi/view/adminhtml/templates/catalog/product/edit/action/inventory.phtml on line 24
  • 将产品添加到目录类别时,单击“产品”选项卡上的​ 添加产品 ​时显示的总记录数不再因产品排序顺序而更改。
  • {products(filter: {sku: {eq: "some sku"}}) {…}查询现在返回已转换为预期货币的值。 以前,price_tiers.final_price.value以基础货币显示特殊价格。 Petkovski Marjan在拉取请求中提交的修复28890GitHub-26121

Cleanup

  • 已从app/code/Magento/AdvancedPricingImportExport/Model/Import/AdvancedPricing/Validator/Website.phpapp/code/Magento/AdvancedPricingImportExport/Model/Import/AdvancedPricing/Validator/TierPriceType.php中删除冗余init方法。 Oleh Usik在拉取请求中提交的修复28650GitHub-29009
  • 更新了Adobe Commerce徽标并从magento/magento2存储库的主自述文件中删除了无关空格。 Rafael Cora r̻Gomes在拉取请求28891中提交的 ​修复。 GitHub-29056
  • 通过优化逻辑并删除冗余变量分配和函数中返回的超量使用,lib/internal/Magento/Framework/App/Request/Http.php文件已得到简化。 Chris Snedaker在拉取请求中提交的修复28608GitHub-29381
  • 修复了\Magento\Downloadable\Block\Sales\Order\Email\Items\Downloadable的类描述中的拼写错误。 Benjamin Rosenberger在拉取请求中提交的修复29451GitHub-29470

CMS内容

  • 现在,选定默认商店视图的“层次结构”选项卡可按预期显示选定的父页面。
  • 当新的商店视图包含的CMS页面与其他商店视图中的页面具有相同的URL键时,应用程序在商店视图创建期间不再引发错误。 Vadim Malesh在拉取请求中提交的修复28421GitHub-28357

可配置的产品

  • 已更正可配置产品编辑当前变体列表的分页问题。
  • 当购物者为可配置产品选择选项时,应用程序不再更新“相关产品”价格框。 以前,每当购物者选择可配置产品的选项时,应用程序都会更新价格框。
  • 现在,应用程序在“管理员创建订单”页面上显示了带有可自定义选项的可配置产品的正确价格。 如预期的那样,显示的价格是子产品的价格和自定义选项的价格之和。 以前,应用程序仅显示自定义选项价格。 GitHub-25766
  • 应用购物车价格规则后,订单摘要现在显示正确的折扣金额。 以前,规则在计算运费折扣时无法正确舍入金额。
  • 从范围受限的管理员帐户创建的管理员用户帐户现在可以按预期创建具有属性的可配置产品。 以前,应用程序引发此错误: Notice: Undefined index: value_index in 23develop/app/code/Magento/ConfigurableProduct/Helper/Product/Options/Factory.php on line 101
  • 当您使用POST/V1/products到值为0的可配置产品时,应用程序不再引发验证错误。 int以前,应用程序引发此错误: Product with id "%1" does not contain required attribute "%2"." Vadim Malesh在拉取请求29001 ​中提交的修复。 GitHub-13210

Cookies

  • 应用程序现在为每个会话最多创建一个mage-translation-file-versionmage-translation-storageCookie。 由Ihor Sviziev在拉取请求中提交的修复27364GitHub-27355

cron

  • 扩展了消息队列使用者配置,添加了新参数,这些参数有助于控制使用者并保存服务器资源,并且可能会减少使用者队列CPU消耗:

    • maxIdleTime定义来自队列的新消息的最长等待时间(秒)。
    • sleep指定在检查队列中是否有新消息可用之前休眠的时间(以秒为单位)。
    • onlySpawnWhenMessageAvailable标识是否仅当相关队列中存在可用消息时才应派生使用者。 默认情况下,此设置对所有使用者全局启用,但可以按使用者进行配置。
  • sales_clean_quotes不再一次加载所有过期的引号。 以前,应用程序由于此致命错误而失败,因为同时加载了所有过期的引号: PHP Fatal error: Allowed memory size of 2147483648 bytes exhausted (tried to allocate 20480 bytes) in /path/to/magento2/vendor/magento/framework/Model/AbstractModel.php on line 359

CSS

  • 服务器端LESS编译器现在会在您运行bin/magento setup:static-content:deploy -f时按预期导入所有远程CSS文件。 以前,应用程序不导入远程文件,并引发错误。 GitHub-25119

客户

  • 管理员客户地址中的区域名称现在按预期进行了翻译。
  • 省/市/自治区 ​字段现在按预期在“编辑地址”页(我的帐户 > 通讯簿)上填充。
  • 当客户在整个店面多次单击启用了不可见reCAPTCHA的表单上的​ Submit ​按钮时,应用程序不再引发错误。 以前,多次单击此按钮会导致类似以下内容的内部错误: Internal error: Make sure you are using reCaptcha V3 api keys
  • 现在,从管理员那里保存已删除的客户只会生成一条错误消息。 以前,应用程序显示一个空白页,并生成一个包含此字符串的报告: "0":"No such entity with customerId = 3","1":"#1 Magento\\Customer\\Model CustomerRegistry->retrieve() called at [app\/code\/Magento\/Customer\/Model\/ResourceModel\/CustomerRepository.php:340"
  • 现在,当管理员尝试为帐户刚刚被删除的客户保存地址时,应用程序会按预期显示错误消息。 以前,应用程序显示一个空白消息框。
  • 已编辑签出工作流和通讯簿中地址字段的标签以保持一致性。
  • 现在,如果前端标签的值不为空,则将其回退到存储标签。 以前,客户属性使用默认前端标签。 Toan Nguyen在拉取请求中提交的修复27064GitHub-27063

目录

  • 现在,省/市/自治区下拉菜单的格式在管理员中是一致的。

dotdigital

  • 当订单包含目录中不再存在的产品SKU时,订单同步不再失败。

  • Web分析数据中不再包含空的产品类别。

  • Web行为跟踪现在适用于具有某些主题配置的商家。 新的回退选择器可解决此问题。

  • 使用cron运行客户同步时,订阅者状态数据字段不再包含空值。 (应用程序模拟可解决此问题。)

  • 现在,如果在默认级别启用dotdigital帐户,但在主网站中禁用,则通讯簿映射将按预期工作。

  • 现在,可以为包含加号(“+”)的电子邮件地址生成优惠券(使用外部动态内容URL生成优惠券)。

  • 当联系人的last_subscribed_at值为null时,不再重新订阅联系人。

  • 已解决影响早期版本的升级错误(自4.5.2开始)。

  • 修复了4.5.3中引入的回归问题,该问题在准备订阅者导出时影响使用获得订阅者状态的方法。

  • 现在可以正确计算已同步订阅者的总人数(显示在日志和屏幕上)。

可下载

  • “我的可下载产品”区域现在会按预期显示已购买的可下载产品的链接,这些产品属于分组产品。
  • 现在,单击“管理员”产品页面中可下载产品的​ 示例 ​按钮时,可按预期下载示例。 以前,当您单击​ 示例 ​时,应用程序显示以下错误: The product that was requested doesn't exist. Verify the product and try again
  • 购物者现在可以下载无库存的可下载产品样品。 以前,当购物者尝试下载示例时,应用程序会打开一个新选项卡,但不会显示信息性消息或开始下载过程。 Vadim Malesh在拉取请求中提交的修复28898GitHub-23638
  • 改进了当购物者尝试为可下载产品设置送货地址时应用程序显示的例外消息。 由Michal Derlatka在拉取请求中提交的修复28904GitHub-26107
  • 当使用RESTPUT调用更新stock_item值时,将更新产品的stock_item数据,并按预期保留可下载的产品链接和示例。 以前,在产品更新之后,该产品不再包含用于下载内容的链接。 Vadim Malesh在拉取请求中提交的修复28799GitHub-21811
  • 现在,当客户为仅包含可下载产品的订单设置送货地址时,应用程序会显示一条信息更丰富的消息。

电子邮件

  • 如果在创建订单后更改了客户电子邮件,则应用程序现在会向正确的客户电子邮件发送有关订单更改的电子邮件通知。
  • 向客户发送的订单更新电子邮件现在包含正确的订单状态。 以前,如果订单状态从processing更改为其他状态,则订单电子邮件不会反映状态更改。
  • 应用程序在访客结帐期间不再显示有关现有帐户的误导性消息。 以前,当访客导航到签出页面,然后导航回送货页面时,应用程序显示以下错误: You already have an account with us. Sign in or continue as guest
  • 现在,自定义电子邮件模板会加载与本机默认电子邮件模板相同的元素。 以前,缺少某些元素,包括变量值。
  • 产品警报电子邮件现在从订阅警报的存储中发送。 以前,此电子邮件始终从默认商店发送。 Maciej Pawlowski在拉取请求中提交的修复26534GitHub-28968
  • 您现在可以创建电子邮件模板,用于发送电子邮件 Content-Type: "text/plain"。 以前,应用程序忽略模板中指定的内容类型。 由twoonesixdigital在拉取请求中提交的修复26474GitHub-26471