[已解决]关于验证码 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看看关于高版本的解决办法

查看配置 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

5、已解决

关于验证码 mews/captcha v3.2.9 版本的破坏性造成本地验证码无法起到验证效果 ?

明天我们吃什么 悲哀藏在现实中 Tacks
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 5
NightingaleWK

感谢,这下知道了 :wink:

1年前 评论
Tacks (楼主) 1年前

在这出问题了,感谢

1年前 评论

我的那个开源项目,也是有人说验证码无效,我也发现是这个问题,,,巨坑!!!

1年前 评论
Mutoulee

这个坑之前已经踩过一次了 :sweat_smile:

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!