php-symfony 1.4:如何使用csrf令牌重定向


php symfony 1.4: how to redirect with csrf token

我想在同一模块中从动作a重定向到动作b。操作b需要执行csrf令牌,我还需要向它传递一些参数。

动作a:

public function executeA(sfWebRequest $request){
   //... do stuff
   $this->redirect('module/b?id='.$something->getId());
}

动作b:

public function executeB(sfWebRequest $request){
   $request->checkCSRFProtection(); //morte
   $something_id = $request->getParameter('id');
   //... do stuff
}

只有在点击link_to('module/b?id='.$something.getId() , array('method' => 'post'))或任何其他方法创建的锚点时,动作b才会执行,因为它会随请求一起发送csrf令牌。

我尝试了$this->forward()$this->redirect()方法,并尝试像link_to()中那样添加'method' => 'post'来重定向参数,但都不起作用,而且我在网上也找不到任何关于它的信息。API文档中说要注意这一点。我得到的只是

 500 | Internal Server Error | sfValidatorErrorSchema
_csrf_token [Required.]

错误。它在标记为CCD_ 10的线上失败。请,有人知道,如何正确地做到这一点,以及在我想重定向到其他模块的情况下?

好了,现在更清楚了。

事实上,_csrf_token没有重定向到其他操作,我的意思是,您没有在查询中重新添加它。

尝试:

public function executeA(sfWebRequest $request){
   //... do stuff
   $this->redirect('module/b?id='.$something->getId().'?_csrf_token='.$request->getParameter('_csrf_token'));
}