【发布时间】:2021-12-28 19:06:40
【问题描述】:
app/Config/Filters.php
您可以为所有发布方法设置过滤器
public $methods = [
'post' => ['filter'],
];
或者您可以为给定区域设置过滤器(但所有方法)
public $filters = [
'filter' => ['before' => ['account/*', 'profiles/*']]
];
如何在给定区域中为仅发布方法设置过滤器?或者甚至在除一个以外的所有领域都更好?
我知道个人端点路由是可能的,但我希望找到更多的全球解决方案..
【问题讨论】:
-
From the docs: "选择的 URI 可以被列入 CSRF 保护的白名单(例如 API 端点需要外部发布的内容)。您可以通过将这些 URI 添加为过滤器中的例外来添加这些 URI:。 ..”。这就是你所追求的吗?
-
@Don'tPanic 是的,但我觉得它不仅可以用于发布,还可以用于其他方法。我还假设 $method 配置覆盖了以前的配置,或者我可以将它们结合起来?..
-
我尝试将 $global 与 $method 结合起来,似乎后者覆盖了前者。就像在 csrf 中一样,post 忽略了 global..中的异常。
-
我不确定我理解你的意思。我从文档中引用的文本是关于将 URI 从 CSRF 保护中排除,方法是将它们添加到
except数组中。您的问题是“在除一个以外的所有领域”,所以我认为这就是您要尝试做的。except也支持正则表达式,因此您可以排除模式。关于方法 - 在该文档页面的顶部它说:“CSRF 保护仅适用于 POST/PUT/PATCH/DELETE 请求。其他方法的请求不受保护。” -
@Don'tPanic 是的,但 URI 排除只是一部分。问题是将其与特定的请求方法结合起来。
标签: php codeigniter-4