2017-02-20 15 views
0

У меня есть база приложений на основе Zend 2. У меня есть форма с полем CSRF. Если я заполню форму и отправлю через примерно 5 минут, это даст мне ошибку проверки The form submitted did not originate from the expected site.Zend Framework 2 Проверка CSRF

Поэтому я предположил, что это может быть проблема с конфигурациями сеансов. Затем я добавил варианты SessionConfig на module.config.php в follows

'session' => array(
    'remember_me_seconds' => 2419200, 
    'use_cookies' => true, 
    'cookie_httponly' => true, 
    'cookie_lifetime' => '2419200', 
    'gc_maxlifetime' => '2419200' 
), 

Но проблема все еще существует. Вы знаете, как решить эту проблему?

--Update--

Моя форма класс содержит элемент CSRF следующим образом,

$this->add(array(
     'type' => 'Zend\Form\Element\Csrf', 
     'name' => 'security', 
     'options' => array(
      'csrf_options' => array(
       'timeout' => 20000 
      ) 
     ) 
    )); 

Ни один из них не похоже на работу.

ответ

1

Система CSRF под ZendFramework настраивает длительность сеанса от параметра, сохраненного в конфигурации элемента CSRF под ключ timeout, как показано в следующем примере:

$form->add([ 
    'type' => Element\Csrf::class, 
    'name' => 'csrf', 
    'options' => [ 
     'csrf_options' => [ 
      'timeout' => 600, 
     ], 
    ], 
]); 
+0

Infact Я уже сделал это. Я уточню вопрос. Даже с таймаутом у него проблема. – Ruwantha