安全.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 上进行了测试
从SF6开始,根据官方文档,csrf保护是在security.yaml文件中启用的,而不是在framework.yaml文件中。
# config/packages/security.yaml
firewalls:
secured_area:
form_login:
enable_csrf: true
可能就是这个原因。