SuperAPI AI 工具集

oro-security

安全与审计

查看项目

更新于 10-16 01:35

技能介绍

用途:面向 OroCommerce v6.1 的安全与 ACL 配置,指导实体权限、所有权与访问控制的设置。

主要能力:

  • 实体 ACL:在 Resources/config/oro/acls.yml 中定义,结构为 type: entity、class(FQCN)、permission(VIEW、CREATE、EDIT、DELETE、ASSIGN、EXECUTE)及 description。
  • PHP 8 Acl 属性:在控制器方法上使用 #[Acl(...)] 声明 ACL 要求,属性优先于 YAML 绑定,因其与被保护的代码放在一起且类型安全。
  • 所有权与组织:所有权决定可访问实体的主体,含 USER、BUSINESS_UNIT、ORGANIZATION、GLOBAL 四种范围;在 Resources/config/oro/entity.yml 中配置 owner_type、owner_field_name、organization_field_name。若所有权为 USER 或 BUSINESS_UNIT,实体必须有 organization 字段,缺失会导致权限检查静默失败。
  • AclHelper 查询过滤:ACL 检查不会自动作用于查询,必须显式调用 $aclHelper->apply($qb),否则查询会返回所有实体,无视权限。自定义访问规则见 AccessRuleInterface。

适用场景:为 OroCommerce 后台配置实体级权限、所有权与组织范围访问控制,以及在仓储查询中按权限过滤数据。

限制与常见陷阱:查询过滤非自动,需显式调用 AclHelper,避免在 PHP 层而非数据库层过滤;AclAncestor 会跳过对象级检查,仅适用于类级权限验证(如列表页),特定对象应使用完整 Acl 属性或 isGranted();USER/BUSINESS_UNIT 所有权缺少 organization 字段会导致权限检查意外返回 false。更多 AclAncestor 细节、自定义权限、字段级 ACL、常见模式、调试与其他陷阱见 security-patterns.md;完整权限/所有权矩阵与 v6.1 说明见 permission-matrix.md。