简体   繁体   English

Symfony 3 CSRF令牌

[英]Symfony 3 csrf token

How can I get or set the csrf_token with symfony? 如何获取或设置symfony的csrf_token? here my code and I don't know how can I do with 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');

Thanks! 谢谢!

Symfony doesn't provide a CSRF token to every POST request by default. 默认情况下,Symfony不会为每个POST请求提供CSRF令牌。 My recommendation would be to use Symfony Forms that give you CSRF protection out of the box. 我的建议是使用开箱即用的Symfony表单为您提供CSRF保护。 This will also make your life easier when handling form submission, adding validation rules, rendering the form, and much more. 在处理表单提交,添加验证规则,呈现表单等等时,这也将使您的生活更加轻松。

Bartosz answer is a possibility. 巴托斯的答案是可能的。 But if you don't want to use a Symfony form you can do in your twig template: 但是,如果您不想使用Symfony表单,则可以在树枝模板中执行以下操作:

<input type="hidden" name="_csrf_token" value="{{ csrf_token('my_form') }}" />

In your controller: 在您的控制器中:

$csrfTtoken =  $request->request->get('_csrf_token');
if ($this->isCsrfTokenValid('my_form', $csrfTtoken)) {
    // csrf token is valid!
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM