Lumen 实现接口 Captcha图片验证码功能
安装
composer require youngyezi/captcha
使用
新版的包已经删除了 session 支持,完全交给业务自由选择存储方式
个人觉得这样更方便来解耦业务,尤其 Lumen 大多时候用来做 Api 开发,并不需要开启 Session 服务
注册服务 bootstrap\app.php
$app->register(Youngyezi\Captcha\CaptchaServiceProvider::class); // 添加别名
$app->alias('captcha', 'Youngyezi\Captcha\CaptchaServiceProvider');
配置文件
复制 vendor\Youngyezi\Captcha\config\captcha.php 文件至 项目 config 文件下
For Example
验证码生成
// 创建验证码
// 配置文件 key($config)
// 返回值包括一个base_64加密的图片和一个key
$data = app('captcha')->create(); // 自定义储存 key (如 redis ,session 等) .... // 返回验证码图片 img
生成的base64可以用这个站点转换 站点链接

验证码校验
// 通过 code 和 key 来校验
$captcha = $request->input('captcha'); // 获取自定义存储的 key 值
$key = { ... }; if(app('captcha')->check($captcha, $key) === false) {
//校验失败
}
/*
* 用户注册
*/
public function register()
{
$input = Input::get();
if(!isset($input['username']) || empty($input['username']) ||
!isset($input['iponenumber']) || empty($input['iponenumber']) ||
!isset($input['password']) || empty($input['password']) ||
!isset($input['key']) || empty($input['key']) ||
!isset($input['captcha']) || empty($input['captcha'])
){
return response()->json(['code'=>,'msg'=>'参数缺失']);
} if(!$this->check($input['key'],$input['captcha'])){
return response()->json(['code'=>,'msg'=>'输入验证码错误']);
} if(DB::table('user')->where('iponenumber',$input['iponenumber'])->first()){
return response()->json(['code'=>,'msg'=>'手机号已注册']);
} $insert = DB::table('user')->insert(['username'=>htmlspecialchars($input['username']),'iponenumber'=>$input['iponenumber'],'password'=>Hash::make($input['password'])]);
if($insert){
return response()->json(['code'=>,'msg'=>'注册成功']);
}else{
return response()->json(['code'=>,'msg'=>'注册失败']);
}
} /*
* 图片验证码
* 返回值包括一个base_64加密的图片和一个key
*/
public function captchaInfo()
{
$result = app('captcha')->create();
Cache::put($result['key'],$result['key'],);
if(isset($result['sensitive'])){
unset($result['sensitive']);
}
return response()->json(['code'=>,'msg'=>'成功','data'=>$result]);
} /**
* @params key,captcha
* 两个参数key和验证码
*/
private function check($key,$captcha)
{
return app('captcha')->check(strtolower($captcha),Cache::get($key));
}
自己封装使用的demo
https://github.com/Youngyezi/captcha
Lumen 实现接口 Captcha图片验证码功能的更多相关文章
- Lumen5.7快速实现Captcha图片验证码功能
公司发送短信注册的接口需要防刷,需要一个图形验证码,不考虑收费产品. Lumen5.7+nginx+mysql 使用了这个作者的扩展包,只讲实现.https://github.com/Youngyez ...
- 使用.Net Core 2.1开发Captcha图片验证码服务
更新后续篇:Captcha服务(后续1) 使用.Net Core 2.1开发Captcha验证码服务 开发工具:Visual Studio 2017 15.7.3 开发平台:64位 Windows 1 ...
- Springboot +redis+⾕歌开源Kaptcha实现图片验证码功能
Springboot +redis+⾕歌开源Kaptcha实现图片验证码功能 背景 注册-登录-修改密码⼀般需要发送验证码,但是容易被 攻击恶意调⽤ 什么是短信-邮箱轰炸机 手机短信轰炸机是批.循环给 ...
- 纯JS实现图片验证码功能并兼容IE6-8
最近要搞一个图片验证码功能,但是又不想自己写后台代码.于是自己准备搞一个纯前端的验证码功能,于是网上搜索了一下,找到一个插件gVerify.js,简单好用,实现完美.不过后面接到说要兼容IE8,想想也 ...
- drf实现图片验证码功能
一.背景 在之前实现过django的图片验证码,有自己实现过的,也有基于django-simple-captcha的,都是基于form表单验证,若自己实现,可以获取相应的标签name便可以获取判断,若 ...
- 用Java实现图片验证码功能
一.什么是图片验证码? 可以参考下面这张图: 我们在一些网站注册的时候,经常需要填写以上图片的信息. 1.图片生成实体类: package com.hexianwei.graphic; import ...
- 【Spring】基于SpringMVC的图片验证码功能实现
后台实现代码: ImgController.java 文件 package cn.shop.controller; import java.awt.Color; import java.awt.Fon ...
- django网页图片验证码功能
在一个正常的登录系统中,验证码是非常重要的,用于识别人机,毕竟我们都知道,这个世界中存在着万恶的爬虫,验证码有很多种方式,有图片的,有邮件的,有短信的,有拼图的,不管什么样的验证码,目的都是验证访问用 ...
- Django学习笔记(17)——BBS+Blog项目开发(1)验证码功能的实现
本文主要学习验证码功能的实现,为了项目BBS+Blog项目打下基础. 为了防止机器人频繁登陆网站或者破坏分子恶意登陆,很多用户登录和注册系统都提供了图形验证码功能. 验证码(CAPTCHA)是“Com ...
随机推荐
- IntelliJ IDEA 2018.3.2 永久破解
PS:动手能力强的来,手残的去淘宝买吧,大概15块钱1年.建议看完后在动手,有一个全局观,浪费不了多少时间 一. 下载破解补丁文件 链接:https://pan.baidu.com/s/1wFp14t ...
- Markdown数学公式如何打出回归符号
来源:https://blog.csdn.net/garfielder007/article/details/51646604 函数.符号及特殊字符 语法 效果 语法 效果 语法 效果 \bar{x} ...
- Android ListView的批量处理(多选/反选/删除)
在Android开发中经常遇到使用ListView的情况,有时候需要的不仅仅是列表显示,还有长按列表进行多选,并且批量删除的情况,在这里记录一下自己的所学. 先上效果图: 几个需要用到的核心方法: / ...
- python--终端工具之subprocess
一. subprocess.getstatusoutput import subprocess cmd = 'ifconfig' def cmds(cmd,print_msg=True): statu ...
- [PAT] A1021 Deepest Root
[题目大意] 给出n个结点和n-1条边,问它们能否形成一棵n个结点的树,如果能,从中选出结点作为树根,使整棵树的高度最大.输出所有满足要求的可以作为树根的结点. [思路] 方法一:模拟. 1 连通.边 ...
- <转载> 撤销 git reset 操作
https://blog.csdn.net/mhlghy/article/details/84786497
- Spring里面AOP的和IOC的理解
1.Spring里面AOP的理解:https://www.cnblogs.com/hongwz/p/5764917.html例如日志功能.日志代码往往横向地散布在所有对象层次中,而与它对应的对象的核心 ...
- Web_0003:关于PHP上传文件大小的限制
相关设置如下: 1,file_uploads = on 是否允许通过HTTP上传文件的开关,默认为ON即是开 2,upload_max_filesize = 8m ; 即允许上传文件大小的最大值.默 ...
- BZOJ 2467: [中山市选2010]生成树
有一种图形叫做五角形圈.一个五角形圈的中心有1个由n个顶点和n条边组成的圈.在中心的这个n边圈的每一条边同时也是某一个五角形的一条边,一共有n个不同的五角形.这些五角形只在五角形圈的中心的圈上有公共的 ...
- vue 查看dist文件里的结构
场景:优化打包后的代码,提高性能. 1.方式一:report-json. 1.1 package.json文件里加入以下命令, "report": "vue-cli-se ...