我想在同一模块中从操作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
的行上失败。拜托,有没有人知道,如何正确地做到这一点,以及我想重定向到其他模块的情况?
答案 0 :(得分:2)
好的,现在更清楚了。
事实是_csrf_token
没有重定向到其他操作,我的意思是,你没有在查询中重新添加它。
尝试:
public function executeA(sfWebRequest $request){
//... do stuff
$this->redirect('module/b?id='.$something->getId().'?_csrf_token='.$request->getParameter('_csrf_token'));
}