无效的CSRF令牌 Symfony 5.4

3

我有一个 Symfony 5.4,在开发环境下(docker),登录功能正常。但是当我在生产环境下通过 docker 尝试相同的登录时,出现以下问题:

{"message":"Invalid CSRF token."}

AppAuthenticator.php

public function authenticate(Request $request): Passport
{
.....
return new Passport(
            new UserBadge($credentials['username']),
            new PasswordCredentials($credentials['password']),
            [new CsrfTokenBadge('authenticate', $credentials['csrf_token'])]
        );
}

security.yaml

security:
  firewalls:
    main:
       form_login:
          login_path: _security_login
          check_path: _security_check
          enable_csrf: true

login.html.twig

<form method="post">
   ....
   <input type="hidden" name="_csrf_token" value="{{ csrf_token('authenticate') }}" />
</form>

我看不到表单的 actionaction="{{ path('login') }}")。 - zizoujab
1
请到以下链接修复问题:https://github.com/symfony/symfony/issues/44541 - denned
1个回答

0

请确保$credentials ['csrf_token'] 等于 $request->request->get('_csrf_token')


1
虽然这段代码可能解决了问题,但如果您能够包括解释这段代码是如何解决该问题的,将会有助于提高您的帖子质量并有可能获得更多点赞。请记住,您正在为未来的读者回答问题,而不仅仅是现在提问的人。请编辑您的答案以添加解释,并指出适用的限制和假设。 - Yunnosch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接