crevillo / ezplatform-captcha
仓库专门用于向eZ Platform的一些部分添加验证码
Requires
- php: ^7.1
- gregwar/captcha-bundle: 2.*
Requires (Dev)
- ezsystems/ezplatform-user: ^1.0
- ezsystems/ezpublish-kernel: ~7.5.1
- friendsofphp/php-cs-fixer: ~2.15.0
- matthiasnoback/symfony-dependency-injection-test: ~3.0
- phpunit/phpunit: ^7.0
README
我和我的团队成员最近在The Cocktail收到的其中一个请求是在管理员登录表单和密码恢复表单中添加验证码机制。
此扩展利用gregwar/captcha-bundle和gregwar-captcha包提供了这种可能性。
此扩展的功能
要向这些表单添加验证码,它的工作方式根据表单而异
登录表单
在eZ Platform中,登录表单不是一个Symfony表单
。相反,它是一个普通的表单,您可以在login.html.twig模板中看到。
这使得无法从PHP类中扩展它。这就是为什么,此扩展添加了自己的安全控制器和模板,以便显示验证码。
当将扩展的login_form选项设置为true时,编译器传递将更改一些定义。
在SecurityController中,我们使用验证码库创建验证码图像。此图像被发送到模板。此外,一旦生成,短语将被存储在会话中。
还有一个针对UsernamePasswordFormAuthenticationListener的覆盖,该覆盖检查此会话变量并将其值与表单字段中提供的值进行比较。
如果没有匹配项,则抛出异常。如果有匹配项,则一切照旧。
忘记密码表单
另一方面,有一个用于忘记密码功能的symfony表单。因此,在这种情况下,我们选择添加一个表单类型扩展,该扩展将添加一个验证码字段类型。
仅在启用选项时才将此表单类型扩展添加到容器中。
安装
要安装此扩展,请使用composer安装此包
composer require crevillo/ezplatform-captcha
然后,您需要在您的AppKernel文件中启用Gregwar Captcha Bundle以及此扩展
<?php // app/appKernel.php public function registerBundles() { $bundles = array( // ... new Gregwar\CaptchaBundle\GregwarCaptchaBundle(), new Crevillo\EzCaptchaBundle\TheCocktailEzCaptchaBundle(), ); }
配置
将以下配置添加到您的app/config/config.yml
gregwar_captcha: ~
crevillo_ez_captcha: ~
使用
要在表单中启用验证码,您必须明确启用此选项。修改您的app/config/config.yml
crevillo_ez_captcha:
login_form: true
forgot_password_form: true
您可以通过设置一个或两个值都为false
来禁用验证码保护
选项
目前,您可以定义自定义的验证码宽度和高度,但请注意,这仅适用于登录表单。对于其他表单,您可以遵循Gregwar Captcha Bundle文档中的说明