如果我使用自定义令牌验证器并且无状态设置为 false,则 CSRF 令牌在 Symfony 表单中始终无效

问题描述 投票:0回答:1

安全.yaml

security:
  providers:
    my_user_provider:
      id: CustomUserProvider
  firewalls:
    main:
      provider: my_user_provider
      stateless: false
      custom_authenticators:
         authenticators: CustomAuthTokenAuthenticator

框架.yaml

framework:
  csrf_protection: true  
  session:
    handler_id: null
    cookie_secure: auto
    cookie_samesite: lax
    storage_factory_id: session.storage.factory.native

场景 1 - 用户未经过身份验证

所有形式的 csrf 令牌都没有问题。

场景 2 - 用户已通过身份验证并且

stateless
设置为
true

所有形式的 csrf 令牌都没有问题。

场景 3 - 用户已通过身份验证并且

stateless
设置为
false

在网站上提交每个表单后,都会出现错误,表明我的 CSRF 令牌无效。


如何保持 csrf 令牌启用并使用设置为

stateless
false
选项?

我在 SF 6.x 和 5.x 上进行了测试

symfony csrf
1个回答
0
投票

从SF6开始,根据官方文档,csrf保护是在security.yaml文件中启用的,而不是在framework.yaml文件中。

# config/packages/security.yaml
    firewalls:
        secured_area:
            form_login:
                enable_csrf: true

可能就是这个原因。

© www.soinside.com 2019 - 2024. All rights reserved.