公司发送短信注册的接口需要防刷,需要一个图形验证码,不考虑收费产品。

Lumen5.7+nginx+mysql

使用了这个作者的扩展包,只讲实现。https://github.com/Youngyezi/captcha。

composer require youngyezi/captcha
注册服务 bootstrap\app.php
$app->register(Youngyezi\Captcha\CaptchaServiceProvider::class);
// 添加别名
$app->alias('captcha', 'Youngyezi\Captcha\CaptchaServiceProvider');
复制 vendor\Youngyezi\Captcha\config\captcha.php 文件至 项目 config 文件下
Example:生成验证码
<?php
use Cache;
/**
** @return array
* {"sensitive": false,
"key":"$2y$10$5QrxhlFmuJJgtcA2WpFVSuSTbaf8JVELNSz/cS9oGAS3Skh8cGZf2",
"img": "data:image/png;base64,iVBORw0II="
}
*/
public function captchaInfo()
{
$result = app('captcha')->create();
//这个key可以自定义,我是放到了文件缓存中
$key = sprintf(config('constants.cache.captcha_code'), $result['key']);
Cache::set($key,$result['key'],config('constants.cache.ten'));
//返回值包括一个base_64加密的图片和一个key
return $this->success($result);
}
Example:校验验证码
<?php
/**
*@params key,captcha
*两个参数key 和验证码
*/
public function check(){
$captcha = $request->input('captcha');
$captcha = strtolower($captcha);
$key = Cache::get(sprintf(config('constants.cache.captcha_code'), $request->input('key')));
if(app('captcha')->check($captcha,$key) === false){
return $this->error('验证码错误');
}
}

Finish,Enjoy it.

最新文章

  1. Unity3D 脚本手册
  2. Python socket (多线程)
  3. 150922-写写博客监督下不自觉的自己-PPT,Linux,HTML
  4. 关于linux发行版i386/i686/x86-64/的区别
  5. lsof在运维中的应用
  6. RPI学习--webcam_用fswebcam抓取图片
  7. 【Android动画】之Tween动画 (渐变、缩放、位移、旋转)
  8. Children&#39;s Day
  9. 【开源】前端练手笔记,Chrome扩展应用程序(html+CSS+JS) (1)
  10. HTTP协议报文格式
  11. BZOJ 1324: Exca王者之剑
  12. Treap的读书笔记2
  13. java+js实现完整的图片展示本地目录demo
  14. ng组件通讯的几种方式
  15. Eclipse 基础操作与设置
  16. GZip使用
  17. 在源文件(.c)和头文件(.h)中声明和定义的区别——C语言
  18. DRF序列化
  19. 关于ASP.NET 中 Global.asax 文件的后台事件处理程序
  20. 微信移动端(wap)开发调试工具

热门文章

  1. BayaiM__oracle切换归档模式步骤:
  2. MySQL第三课
  3. nginx location 配置详解
  4. VS2019专业版和企业版激活密钥
  5. LVM 在线扩容磁盘(ubuntu 14.04 server)
  6. 高频Python面试题分享
  7. c# 第20节 一维数据的冒泡排序
  8. alias别名
  9. python的wraps函数
  10. LG3119 「USACO2015JAN」Grass Cownoisseur