安装

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图片验证码功能的更多相关文章

  1. Lumen5.7快速实现Captcha图片验证码功能

    公司发送短信注册的接口需要防刷,需要一个图形验证码,不考虑收费产品. Lumen5.7+nginx+mysql 使用了这个作者的扩展包,只讲实现.https://github.com/Youngyez ...

  2. 使用.Net Core 2.1开发Captcha图片验证码服务

    更新后续篇:Captcha服务(后续1) 使用.Net Core 2.1开发Captcha验证码服务 开发工具:Visual Studio 2017 15.7.3 开发平台:64位 Windows 1 ...

  3. Springboot +redis+⾕歌开源Kaptcha实现图片验证码功能

    Springboot +redis+⾕歌开源Kaptcha实现图片验证码功能 背景 注册-登录-修改密码⼀般需要发送验证码,但是容易被 攻击恶意调⽤ 什么是短信-邮箱轰炸机 手机短信轰炸机是批.循环给 ...

  4. 纯JS实现图片验证码功能并兼容IE6-8

    最近要搞一个图片验证码功能,但是又不想自己写后台代码.于是自己准备搞一个纯前端的验证码功能,于是网上搜索了一下,找到一个插件gVerify.js,简单好用,实现完美.不过后面接到说要兼容IE8,想想也 ...

  5. drf实现图片验证码功能

    一.背景 在之前实现过django的图片验证码,有自己实现过的,也有基于django-simple-captcha的,都是基于form表单验证,若自己实现,可以获取相应的标签name便可以获取判断,若 ...

  6. 用Java实现图片验证码功能

    一.什么是图片验证码? 可以参考下面这张图: 我们在一些网站注册的时候,经常需要填写以上图片的信息. 1.图片生成实体类: package com.hexianwei.graphic; import ...

  7. 【Spring】基于SpringMVC的图片验证码功能实现

    后台实现代码: ImgController.java 文件 package cn.shop.controller; import java.awt.Color; import java.awt.Fon ...

  8. django网页图片验证码功能

    在一个正常的登录系统中,验证码是非常重要的,用于识别人机,毕竟我们都知道,这个世界中存在着万恶的爬虫,验证码有很多种方式,有图片的,有邮件的,有短信的,有拼图的,不管什么样的验证码,目的都是验证访问用 ...

  9. Django学习笔记(17)——BBS+Blog项目开发(1)验证码功能的实现

    本文主要学习验证码功能的实现,为了项目BBS+Blog项目打下基础. 为了防止机器人频繁登陆网站或者破坏分子恶意登陆,很多用户登录和注册系统都提供了图形验证码功能. 验证码(CAPTCHA)是“Com ...

随机推荐

  1. 【sklearn】Toy datasets上的分类/回归问题 (XGBoost实践)

    分类问题 1. 手写数字识别问题 from sklearn.datasets import load_digits digits = load_digits() # 加载手写字符识别数据集 X = d ...

  2. [51nod 1256] 乘法逆元 - exgcd

    给出2个数M和N(M < N),且M与N互质,找出一个数K满足0 < K < N且K * M % N = 1,如果有多个满足条件的,输出最小的. Solution 用 EXGCD 求 ...

  3. 转行小白成长路-java篇

    第五章:初始化与清理 前几章怎么看都没发现有什么逻辑顺序,感觉都是相互独立的,在讲述java语言构成的基本单位和规则.这个先放置一边. java中初始化有两层含义,其一是创建,二是赋值. 其本质也就是 ...

  4. 页面置换算法——最近最久未使用算法(c语言实现)

    操作系统实验:用C语言编程实现最近最久未使用置换算法(LRU) 最近最久未使用置换算法(LRU),全称Least Recently Used,是一种页面置换算法. 对于在内存中但又不用的数据块(内存块 ...

  5. npm常用模块汇总

    npm常用模块汇总: 点击插件名字,查看使用文档 npm常用模块汇总 node常用模块汇总 gulp常用插件汇总 npx 使用教程:npx使用教程 bable:bable这是JavaScript编译器 ...

  6. Agri-Net POJ - 1258 prim

    #include<iostream> #include<cstdio> #include<cstring> using namespace std; ; #defi ...

  7. Linux 基础操作命令

    关机和注销 shutdown -h now 立刻关机 shutdown -r now 立刻重启 shutdown -h + 1分钟后关机(重启同样用法) shutdown -h : 11点钟关机(重启 ...

  8. SAP 登录Fiori的user和登录WEB UI的business role之间的关系。

    SAP 登录FIORI的user 会被assign 一些控制前端app显示的business role(是一些PFCG role的集合),该business role和登录web ui选择的S4C_S ...

  9. 今天才知道a标签的href="#"是回到页面顶部

    如题,真的是,做了一年多的开发,今天才知道a标签的href="#"是回到顶部.以前一直以为这是个多么了不起的功能. 顺便扩展一下滑动隐藏和显示按钮(从别处拷贝来的代码) $( do ...

  10. sqli-labs less-17 --> less-20

    Less-17 (报错盲注) 参考资料1:https://www.cnblogs.com/AmoBlogs/p/8673748.html