thinkphp 前后端分离的图像验证码拓展

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 里面是我写这个拓展时候的详细记录

php工作日志

微信小程序 wxParse 富文本解析新增音频mp3解析功能

2020-12-30 14:55:51

php工作日志thinkphp

使用 composer 开发拓展包

2021-1-9 20:18:35

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧