我有基于Zend框架2的应用程序。我有一个带有CSRF字段的表单。如果我填写表单并在大约5分钟后提交,则会给出The form submitted did not originate from the expected site
验证错误。
所以我认为它可能是会话配置的一些问题。然后,我在SessionConfig
module.config.php
上添加了选项'session' => array(
'remember_me_seconds' => 2419200,
'use_cookies' => true,
'cookie_httponly' => true,
'cookie_lifetime' => '2419200',
'gc_maxlifetime' => '2419200'
),
作为follows
$this->add(array( 'type' => 'Zend\Form\Element\Csrf', 'name' => 'security', 'options' => array( 'csrf_options' => array( 'timeout' => 20000 ) ) ));
但问题仍然存在。你知道如何解决这个问题吗?
- 更新 -
我的表单类包含CSRF元素,如下所示,
var query = {
$or:[
{"profile.public.f1": {$in: [null, false, '']}},
{"profile.public.f2": {$in: [null, false, '']}},
{"profile.public.f3": {$in: [null, false, '']}}
]
};
这些似乎都不起作用。
答案 0 :(得分:1)
ZendFramework下的Csrf系统根据存储在timeout
密钥下的Csrf元素配置中的参数配置会话持续时间,如以下示例所示:
$form->add([
'type' => Element\Csrf::class,
'name' => 'csrf',
'options' => [
'csrf_options' => [
'timeout' => 600,
],
],
]);