Lumen 实现接口 Captcha图片验证码功能
2024-10-16 13:20:41
安装
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
最新文章
- SAP CRM 使用Javascript触发SAP Server Event
- html iframe 元素之间的调用
- 问题(the question)
- C/C++程序员应聘试题剖析(转载)
- 全屏背景:15个jQuery插件实现全屏背景图像或媒体
- [LintCode] Valid Palindrome 验证回文字符串
- <;mvc:annotation-driven/>;与<;mvc:default-servlet-handler/>;之间的一个问题
- knockoutjs+jquery.gridgroup 实现table数据加载和行合并
- Ubuntu上安装jdk,Jboss
- 密码算法详解——AES
- Css绘制形状
- 使用Shader制作loading旋转动画
- cxgrid主从表的从表数据小于主表总数的问题
- Dynamics CRM Plug-in
- mysql报错:1130 -host 'localhost' is not allowed to connect to this mysql server
- mybatis学习 十六 auto_mapping实现连表查询
- datagrid 完整dom结构
- 使用jQuery在javascript中自定义事件
- Windwos在cmd如何复制文本
- 【matlab】使用VideoReader提取视频的每一帧,不能用aviread函数~