Php 在Symfony 3.4中设置自定义CsrfTokenGenerator
我正在Symfony 3.4中构建一个示例,演示如何不生成CSRF令牌(出于教育目的)。我已经制作了一个自定义的Php 在Symfony 3.4中设置自定义CsrfTokenGenerator,php,symfony,csrf,csrf-protection,symfony-3.4,Php,Symfony,Csrf,Csrf Protection,Symfony 3.4,我正在Symfony 3.4中构建一个示例,演示如何不生成CSRF令牌(出于教育目的)。我已经制作了一个自定义的CsrfTokenGenerator,它实现了tokengenerator接口,但是现在我想配置CsrfTokenManager,它是Symfony中内置的,可以使用这个生成器来生成CSRF令牌,而不是默认的。如何在Symfony yml文件中配置此功能?或者有没有其他方法来实现这一点 CsrfTokenManager构造函数具有以下签名public function\uu构造(Tok
CsrfTokenGenerator
,它实现了tokengenerator接口
,但是现在我想配置CsrfTokenManager
,它是Symfony中内置的,可以使用这个生成器来生成CSRF令牌,而不是默认的。如何在Symfony yml文件中配置此功能?或者有没有其他方法来实现这一点
CsrfTokenManager
构造函数具有以下签名public function\uu构造(TokenGeneratorInterface$generator=null,TokenStorageInterface$storage=null,$namespace=null)
,因此可以将自定义的TokenGeneratorInterface
作为参数,但如何设置此参数,由于我们无法直接访问此控制器。嗯,这是一个很好的控制器。做这件事没有简单的方法。简单地说,我指的是重写配置参数
在这种情况下,你可以利用。以下是解决方法:
TokenGeneratorInterface
的实现注册为服务CustomCsrfTokenGeneratorPass
。根据您是在捆绑包中还是在应用程序中,有不同的注册方式$container->findDefinition()
方法查找CsrfTokenManager
的注册定义$definition->setArgument()
来修改服务定义。将您选择的参数替换为引用`新引用('your-custom-crsf-token-generator-service-id')李>