Captcha for Lumen

本项目修改自 Captcha for Laravel 5.

预览效果图

Preview

安装

  • 项目必须启用缓存才能使用,因为验证码和验证码绑定的uuid都是保存在缓存的。

project's composer.json.


composer require aishan/lumen-captcha

or


{

    "require": {

        "laravel/lumen-framework": "5.3.*",

        "aishan/lumen-captcha": "v1.3"

    },

    "minimum-stability": "dev"

}

使用

在bootstrap/app.php中注册Captcha Service Provider:


    //验证码

    $app->register(Aishan\LumenCaptcha\CaptchaServiceProvider::class);

    class_alias('Aishan\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

        ]);

        ...

    }

Links