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

时间:2012-09-11 19:22:07

标签: php redirect symfony-1.4

我想在同一模块中从操作a重定向到操作b。 Action 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

}

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

我尝试了$this->forward()$this->redirect()种方法,并尝试添加'method' => 'post'来重定向link_to()中的参数,但没有任何作用,我无法找到任何关于它的信息网络也。 API文档说明了它。我得到的只是

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

错误。它在标记为//morte的行上失败。拜托,有没有人知道,如何正确地做到这一点,以及我想重定向到其他模块的情况?

1 个答案:

答案 0 :(得分:2)

好的,现在更清楚了。

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

尝试:

public function executeA(sfWebRequest $request){

   //... do stuff

   $this->redirect('module/b?id='.$something->getId().'?_csrf_token='.$request->getParameter('_csrf_token'));

}