1

我需要禁用 ORO 商务中的所有店面页面,API 和公共文件(js、媒体等)除外。

我尝试使用kernel.controller事件侦听器并通过检查防火墙上下文来挑选前端请求:

$request->get('_firewall_context') === 'security.firewall.map.context.frontend'

AbstractFOSRestController并通过检查控制器实例和ApiDoc相关来设法过滤 API 控制器。但是找不到合适的方法来分离店面页面和公共文件请求。

4

1 回答 1

1
  1. JS 和 Media应该直接由网络服务器(通常是 Nginx)提供服务。在这种情况下,与应用程序无关。但是已经有一个名为assets具有security: false选项的防火墙,因此即使这些文件由应用程序提供,安全检查也被禁用。

  2. 还有私人附件。您可以再创建一个防火墙,如果需要,它会在之前加载frontend以单独提供私人店面附件。

  3. 您需要中断的唯一防火墙是frontend. 您可以使用防火墙配置完全禁用对它的访问,并添加自定义访问拒绝处理程序以返回 404 而不是 403。

要获取防火墙的完整列表,您可以运行:

php bin/console debug:config security firewalls

一般来说,依赖防火墙名称而不是防火墙上下文要容易得多。

于 2020-06-19T08:50:49.670 回答