安装

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. 面试官:Java序列化为什么要实现Serializable接口?我懵了

    整理了一些Java方面的架构.面试资料(微服务.集群.分布式.中间件等),有需要的小伙伴可以关注公众号[程序员内点事],无套路自行领取 更多优选 一口气说出 9种 分布式ID生成方式,面试官有点懵了 ...

  2. MY_0002:导出单位设置

    1,导出模型给canvas工具用时,设置单位为m,再参考模型所占网格大小.

  3. linux(服务器)如何确认网卡(网口)对应的配置文件

    服务器装完系统就要配置网络,然而服务器经常是多网卡多网口,我们在某个网口插上网线后,到/etc/sysconfig/network-scripts/下配置ip时无法确定网口对应的配置文件.(比如是et ...

  4. 2019牛客多校第二场H题(悬线法)

    把以前的题补补,用悬线求面积第二大的子矩形.我们先求出最大子矩阵的面积,并记录其行三个方向上的悬线长度.然后排除这个矩形,记得还得特判少一行或者少一列的情况 #include <bits/std ...

  5. 判断合同金额是否可以转整形和sql语句中添加条件语句

    主要用到sqlserver语句中的判断语法 if (min_hetonge.Length > 0 && int.TryParse(min_hetonge, out min)) s ...

  6. P1041 传染病控制【暴搜】

    P1041 传染病控制 提交 10.78k 通过 3.74k 时间限制 1.00s 内存限制 125.00MB 题目提供者CCF_NOI 难度提高+/省选- 历史分数100 提交记录 查看题解 标签 ...

  7. 零基础入门 Kubernetes,你需要知道这些

    Kubernetes是什么? 大概很多人对此都有疑问,不过在容器领域,Kubernetes却无人不晓. 阿里.字节跳动.腾讯.百度等中国互联网行业巨擘们,近年来都在深耕容器领域,而Kubernetes ...

  8. 使用Beautiful Soup爬取猫眼TOP100的电影信息

    使用Beautiful Soup爬取猫眼TOP100的电影信息,将排名.图片.电影名称.演员.时间.评分等信息,提取的结果以文件形式保存下来. import time import json impo ...

  9. php文件上传与下载(附封装好的函数文件)

    单文件上传前端页面 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  10. 【巨杉数据库SequoiaDB】助力金融科技升级,巨杉数据库闪耀金融展

    11月4日,以“科技助创新 开放促改革 发展惠民生”为主题的2019中国国际金融展和深圳国际金融博览会在深圳会展中心盛大开幕. 中国人民银行党委委员.副行长范一飞,深圳市人民政府副市长.党组成员艾学峰 ...