동일한 모듈에서 a
작업에서 b
작업으로 리디렉션하고 싶습니다. 액션 b
을 실행하려면 csrf 토큰이 필요하며, 몇 가지 매개 변수도 전달해야합니다.php symfony 1.4 : csrf 토큰으로 리디렉션하는 방법
액션 :
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()
방법을 시도하고,
link_to()
처럼 PARAMS을 리디렉션
'method' => 'post'
을 추가했지만, 아무것도 작동하고, 나도 웹에 그것에 대해 아무것도 찾을 수 없습니다. API 문서는 그것에 대해 지적했다. 내가받는 것은
500 | Internal Server Error | sfValidatorErrorSchema
_csrf_token [Required.]
오류입니다. //morte
으로 표시된 줄에서 실패합니다. 제발, 아는 사람, 어떻게 제대로, 그리고 내가 다른 모듈로 리디렉션하려는 경우에도 어떻게해야합니까?
'_csrf_token' 단지 형태로 사용된다. 양식을 전달하고 있습니까? – j0k
'_csrf_token'은 일부 메소드와 함께 앵커에서도 사용됩니다. 'anchor'의'html'을 검사합니다. 나는'$ request-> checkCSRFProtection()'을 사용합니다. 귀하의 질문에 대답하기 위해 양식을 전달하지 않습니다. 그냥 양식 처리를 완료했을 때 csrf 보호 조치가 실행되기를 원합니다. – Kuro
이것은 여전히 나에게 불분명합니다. . – j0k