risentang / lumen-captcha
为lumen设计的captcha
v1.0
2018-12-17 08:32 UTC
Requires
- php: >=5.4
- ext-gd: *
- illuminate/config: ~5.0
- illuminate/filesystem: ~5.0
- illuminate/hashing: ~5.0
- illuminate/support: ~5.0
- intervention/image: ~2.2
This package is auto-updated.
Last update: 2024-09-17 21:28:55 UTC
README
本项目基于 Captcha for Laravel 5 进行修改。
注:非常感谢 aishan/lumen-captcha 提供的无状态缓存版接口验证码,但由于 lumen5.3 中的内核与 lumen5.5 的内核有不同,所以本人经过修改调试,弄出支持 lumen5.5 的无状态缓存版接口验证码。
预览效果图
安装
- 项目必须启用缓存才能使用,因为验证码和验证码绑定的 uuid 都保存在缓存中。请查看项目的
composer.json
文件。
composer require risentang/lumen-captcha
或
{ "require": { "laravel/lumen-framework": "5.5.*", "risentang/lumen-captcha": "^1.0" }, "minimum-stability": "dev" }
使用
在 bootstrap/app.php
中注册 Captcha Service Provider:
//验证码 $app->register(Risentang\LumenCaptcha\CaptchaServiceProvider::class); class_alias('Risentang\LumenCaptcha\Facades\Captcha','Captcha');
配置
在 bootstrap/app.php
中可以配置各种自定义类型的验证码属性:更多详细配置请查看https://github.com/mewebstudio/captcha
/** * captcha配置 */ config(['captcha'=> [ 'useful_time'=>5,//验证码有效时间,单位(分钟) 'captcha_characters'=>'2346789abcdefghjmnpqrtuxyzABCDEFGHJMNPQRTUXYZ', 'sensitive' =>false,//验证码大小写是否敏感 'login' => [//登陆验证码样式 'length' => 4,//验证码字数 'width' => 120,//图片宽度 'height' => 36,//字体大小和图片高度 'angle' => 10,//验证码中字体倾斜度 'lines' => 2,//生成横线条数 'quality' => 90,//品质 'invert' =>false,//反相 'bgImage' =>true,//是否有背景图 'bgColor' =>'#ffffff', 'blur' =>0,//模糊度 'sharpen' =>0,//锐化 'contrast' =>0,//反差 'fontColors'=>['#339900','#ff3300','#9966ff','#3333ff'],//字体颜色 ], ] ]);
当然,也可以不配置,默认就是 default 的样式,验证码有效时间 5 分钟。
使用范例
因为 lumen 一般写的都是无状态的 API,所以此处验证码的图片必须绑定一个 uuid,获取图片验证码时,先获取验证码 url 地址和 uuid,然后在验证时,提交验证码和 uuid 一并验证码。
生成验证码
获取验证码信息:
{站点域名}/captchaInfo/{type?}
其中 type
就是在配置文件中定义的验证码类型(如果你定义了的话),当然也可以不指定 type
,则默认为 default
,返回信息:
{ "code": "10000", "msg": "success", "sub_code": "", "sub_msg": "", "result": { "captchaUrl": "{站点域名}/captcha/default/fc1d7d7f-3d8c-652a-5e92-90e9822740ad", "captchaUuid": "fc1d7d7f-3d8c-652a-5e92-90e9822740ad" } }
captchaUrl
为验证码图片地址,captchaUuid
为绑定验证码图片的 uuid。
验证验证码
在请求中将验证码的值和 uuid 随着你的 post 请求一起发到服务端,在接收参数的地方做验证即可:
public function checkCaptcha(Request $request, $type = 'default',$captchaUuid) { $this->validate($request,[ 'captcha'=>'required|captcha:'.$captchaUuid ]); ... }