Package Data | |
---|---|
Maintainer Username: | risentang |
Maintainer Contact: | magicheart@163.com (risentang) |
Package Create Date: | 2018-11-14 |
Package Last Update: | 2018-12-17 |
Language: | PHP |
License: | MIT |
Last Refreshed: | 2024-12-15 15:12:51 |
Package Statistics | |
---|---|
Total Downloads: | 14 |
Monthly Downloads: | 0 |
Daily Downloads: | 0 |
Total Stars: | 1 |
Total Watchers: | 0 |
Total Forks: | 0 |
Total Open Issues: | 0 |
本项目修改自 Captcha for Laravel 5.
注:非常感谢 aishan/lumen-captcha提供的无状态缓存版接口验证码, 但由于lumen5.3中的内核与lumen5.5的内核有不同。所以本人经过修改调试,弄出支持lumen5.5的无状态缓存版接口验证码。
composer.json
.composer require risentang/lumen-captcha
or
{
"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
]);
...
}