[已解决]关于验证码 mews/captcha v3.2.9 版本的破坏性造成本地验证码无法起到验证效果 ?
1、起因
composer require "mews/captcha:~3.0"
执行这个composer
命令,可以在laravel
框架中加入验证码的功能。但是由于 v3.2.9 的更新 (发布日期 23 Sep 2022),引入了CAPTCHA_DISABLE
常量,默认用于测试环境关闭验证码的校验,只在 product 生产环境生效,这就导致本地测试的时候,无论你输入什么字符,验证码的校验都会通过。
2、我的环境
PHP v7.4.30
Laravel Framework 8.83.23
Composer version 2.4.1
mews/captcha v3.2.9
3、验证码引入
先说一下基本验证码的引入流程
- 1、composer 安装 mews/captcha
- 2、引入配置文件
$ php artisan vendor:publish --provider='Mews\Captcha\CaptchaServiceProvider'
- 3、前端视图中渲染验证码
captcha_src()
对应路由/captcha
- 4、后端控制器中
Auth/RegisterController
表单验证Validator
4、解决办法
方法1.安装指定版本 同summer
教程中的版本
- 先卸载高版本
composer remove "mews/captcha:~3.0"
- 再重新安装
composer require "mews/captcha:3.2.7"
方法2. 查看GitHub看看关于高版本的解决办法
issues250
Validation is always successful regardless of the entered textissues248
Hidden disable feature with v3.2.9 with a strange/broken default behavior
查看配置 config/captcha.php
// 发现多了一行这个配置项 CAPTCHA_DISABLE
'disable' => env('CAPTCHA_DISABLE', !str_contains(env('APP_ENV', 'local'), 'prod')),
- 更改为
// 改为关闭false状态即可,这样本地环境验证码验证就可以生效
'disable' => env('CAPTCHA_DISABLE',false),
- 或者 修改.env 环境配置
// 改为local =>production ,但是感觉不太好,有点太强制,可以不必这样
APP_ENV=local
// 增加配置CAPTCHA_DISABLE,永远false即可
CAPTCHA_DISABLE=false
推荐文章: