Использование CakePHP 2.1
У меня есть следующий кодCakePHP - контроллер вспышки ::() не перенаправляет
public function getForm($id=null){
$this->loadModel('DynamicFormResponse');
/**
* Check if form exists
*/
$this->form_schema= $this->DynamicForm->isValidForm($id);
if($this->form_schema == false){
$this->flash("Invalid form", $this->referer(
array('controller'=>"pages", 'action' => 'display')
));
}
...
...
проблема я столкнулся в том, что вызов $this->flash()
отображает страницу флэш, но и продолжает выполнение контроллер.
Так что если я не делаю что-то вроде
if($this->form_schema == false){
$this->flash("Invalid form", $this->referer(
array('controller'=>"pages", 'action' => 'display')
));
return;
}
контроллер не прекращается.
Основная проблема возникает, когда метод _crsf_error
называется
function _csrf_error() {
$this->flash("csrf Error", $this->referer(
array('controller'=>"pages", 'action' => 'display')
));
}
Поскольку метод вспышки не перенаправляет Он не предлагает никакой защиты от CSRF вообще. Использование return;
после $this->flash()
в _crsf_error
способ не работает.
PS: Полный код доступен here
Исключения кажутся лучшим способом справиться с этим. спасибо – Gautam
setFlash устарел с версии 2.7.0: вам нужно просто использовать Flash для создания флеш-сообщений. setFlash() будет полностью удален в торте 3.0 –