thinkphp5.x 前后端分离图像验证码拓展
当前 Thinkphp 版本 v5.1.39 LTS
由于tp5.1的图像验证码功能是基于session的,且不支持拓展成其他存贮方式。
在前后端完全分离的情况下,使用Jwt鉴权,验证码功能直接废了。所以我改装了一下 tp5.1 的验证码功能模块,通过 cache 的方式实现前后端分离的情况下,对验证码进行验证。
项目地址 https://github.com/18y/think-jwt-captcha
使用说明
thinkphp5.x 图像验证码拓展,可在前后端分离项目使用
本拓展只是将官方验证码类拓展,在不影响原代码情况下,新增一个可在前后端分离项目中使用的接口
接口返回类型如下:
{
// 图像验证码ID
"uniqid": "9a721d42b98946876bf6737f6bf89976",
// 验证码图片base64
"content": "data:image/jpg/png;base64,为了好看,省略n字符"
}
使用 Composer 安装
$ composer require 18y/think-jwt-captcha
使用方式
在控制器中使用下面的代码进行验证码生成
<?php
namespace app\index\controller;
use JwtCaptcha\JwtCaptcha;
class Index
{
// 验证码配置,详细文档看官方 https://www.kancloud.cn/manual/thinkphp5_1/354122
private $config = [
// 验证码密钥
'seKey' => 'xiadmin.com',
// 验证码图片高度
'imageH' => 34,
// 验证码图片宽度
'imageW' => 130,
// 验证码字体大小(px)
'fontSize' => 18,
// 验证码位数
'length' => 3,
// 是否画混淆曲线
'useCurve' => false,
// 是否添加杂点
'useNoise' => false,
];
// 生成验证码
public function verify()
{
$captcha = new JwtCaptcha($this->config);
return $captcha->getEntry();
}
// 验证输入验证码是否正确
public function verify_check()
{
// 验证码ID
$uniqid = '9a721d42b98946876bf6737f6bf89976';
// 用户输入验证码
$code = 'abb';
$captcha = new JwtCaptcha($this->config);
$result = $captcha->checkCaptcha($uniqid, $code);
if(!$result)
{
// 验证码错误
}
}
}
如何使用composer 编写一个拓展在请看这篇文章 https://www.xiadmin.com/38835 里面是我写这个拓展时候的详细记录