You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shopware 6添加Search Criteria的includes仍遇权限缺失问题求助

解决Shopware Admin SDK加载product_manufacturer的权限缺失问题

你遇到的问题核心是应用未声明对product_manufacturer实体的访问权限——即使你限制了只加载id,Shopware也会先校验你是否有访问该实体的权限,字段级的includes限制是建立在实体权限之上的。以下是具体解决步骤:

1. 补充应用权限配置

打开示例应用根目录下的manifest.xml,找到<permissions>节点,添加product_manufacturer:read权限:

<permissions>
    <!-- 保留原有权限 -->
    <permission>product:read</permission>
    <permission>product:write</permission>
    <!-- 添加以下权限声明 -->
    <permission>product_manufacturer:read</permission>
</permissions>

这个配置是告诉Shopware,你的应用需要读取product_manufacturer实体的权限,没有这个声明,即使只请求id也会被权限拦截。

2. 更新应用并确认权限

修改完manifest.xml后,需要重新同步应用配置到Shopware后台:

  • 本地开发环境可执行命令:./bin/console app:refresh
  • 在Shopware后台的「扩展 > 我的扩展」中,找到该示例应用,确认product_manufacturer:read权限已被正确授予

3. 代码优化(可选)

你的Criteria写法本身没问题,但可以更简洁:

async loadManufacturer() {
    const manufacturerCriteria = new data.Classes.Criteria();
    manufacturerCriteria.setLimit(1);
    // 仅加载必要的id字段
    manufacturerCriteria.addIncludes({
        'product_manufacturer': ['id']
    });
    const manufacturers = await data.repository('product_manufacturer').search(manufacturerCriteria);

    this.manufacturer = manufacturers.first() || null;
}

核心解决点还是权限配置,代码优化仅为简化逻辑。

为什么加了includes还是报错?

Shopware的权限校验优先级是:先校验实体级访问权限,再校验字段级权限。你没有声明product_manufacturer的读权限,请求根本到不了字段校验环节,直接就被权限拦截了。

内容的提问来源于stack exchange,提问作者lucamario

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 02:42:20