ZF2 中 CSRF 的默认超时

Default timeout of CSRF in ZF2

是否可以在 Zend 2 中为 CSRF 表单元素指定全局默认超时? 否则我必须为每个 CSRF 元素指定一个超时选项。

P.S.: 当前默认超时值是多少?

Zend\Validator\Csrf的源代码来看,Zend Framework 2中Csrf元素的默认超时设置为300:

protected $timeout = 300; //line 70

如果您想为表单中的所有 Csrf 元素设置相同的超时时间,您可以使用您想要的超时值创建自定义 csrfValidator 并使用 [= 覆盖元素的默认 CSRF 验证器14=]方法。

否则,只需在将 Csrf 元素添加到表单时更改默认选项即可:

You can change the options of the CSRF validator using the setCsrfValidatorOptions function, or by using the csrf_options key.

Csrf documentation

我有自己的表单基础 class,派生自 Zend\Form\From,我的所有表单都继承自该基础。这样我就可以为所有表单设置一些默认行为。具体来说,我现在在这个基础 class 中拥有的一件事是默认情况下所有表单都被赋予一个 CSRF 元素。这样我永远不会忘记添加一个。而且,如果您这样做,那么您可以轻松地在那个地方配置您想要的任何超时,它会应用于您的所有表单。