Symfony 3 csrf令牌

时间:2017-10-27 07:52:49

标签: rest api symfony

如何使用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');

谢谢!

2 个答案:

答案 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!
}