如何使用symfony获取或设置csrf_token? 这里是我的代码,我不知道如何处理csrf_token,
$username = $request->request->get('username');
$password = $request->request->get('password');
if($request->isMethod('POST')){
$headers = array('Accept' => 'application/json');
$query = array('email' => $username, 'mdp' => $password);
$url = ' /**/ ';
$body = Unirest\Request\Body::json($query);
$response = Unirest\Request::post('$url',$headers,$body);
return new Response(json_encode($response));
}
return $this->render('AppBundle:Default:index.html.twig');
谢谢!
答案 0 :(得分:1)
默认情况下,Symfony不为每个POST请求提供CSRF令牌。我的建议是使用Symfony Forms开箱即用的CSRF保护。这也将使您在处理表单提交,添加验证规则,呈现表单等方面更轻松。
答案 1 :(得分:1)
巴托斯回答是可能的。但是如果您不想使用Symfony表单,可以在您的twig模板中执行:
<input type="hidden" name="_csrf_token" value="{{ csrf_token('my_form') }}" />
在您的控制器中:
$csrfTtoken = $request->request->get('_csrf_token');
if ($this->isCsrfTokenValid('my_form', $csrfTtoken)) {
// csrf token is valid!
}