Laravel后端接口使用mews/captcha验证码注册+登录流程讲解
大致的流程讲解:
注册流程:
获取图形验证码并正确填写->请求注册验证短信->填写注册的用户信息+短信验证码->用户注册成功
登录流程:
前端请求短信->已注册用户:返回登录的验证短信->用户登录成功
前端请求短信->未注册用户:提示用户注册
本文主要讲解后端laravel代码的实现注册的流程,登录流程比较简单,不去具体讨论,结合具体业务进行操作
1、安装 mews/captcha
官方仓库地址:
GitHub - mewebstudio/captcha: Captcha for Laravel 5 & 6
安装依赖并注册组件,比较简单,参考官方文档
composer require mews/captcha
在 config/app.php文件中注册服务提供者和别名(laravel5.1以上版本)
'providers' => [// ...Mews\Captcha\CaptchaServiceProvider::class,
],'aliases' => [// ...'Captcha' => Mews\Captcha\Facades\Captcha::class,
]
生成配置文件
php artisan vendor:publish
编辑生成的config/captcha.php
'flat' => ['length' => 4,'width' => 160,'height' => 46,'quality' => 90,'lines' => 6,'bgImage' => false,'bgColor' => '#ecf2f4','fontColors' => ['#2c3e50', '#c0392b', '#16a085', '#c0392b', '#8e44ad', '#303f9f', '#f57c00', '#795548'],'contrast' => -5,]
2、编写图形验证码接口
/*** 获取图形验证码* @return JsonResponse*/public function captcha(){$data = ['url' => app('captcha')->create('flat', true)];return response()->json(['status' => 200,'message' => 'success','data' => $data,]);}
返回值,key为验证的密钥,img为验证码图片(Base64格式)
{"status": 200,"message": "success","data": {"url": {"sensitive": false,"key": "$2y$10$pAStUZM.srOy2kwJbqLFl.BNaPsjg71BZtj3BQ4K6HHsvtO6Cb0HW","img": "data:image/png;base64,iVBORw……………………dw8P6Vb6JW4RcBb6FH8P88iH8kQmCC"}}
}
3、注册短信验证码获取接口
在正确填写图片验证码之后,用户就可以获取到注册需要的短信验证码,发送短信前需要验证方法。
/*** 获取注册短信验证码* @param Request $request* @param SmsService $service 注入短信验证码服务* @return JsonResponse* @throws ApiException*/public function getVerifyCode_register(Request $request,SmsService $service){ $validator = Validator::make($request->toArray(), ['account' => 'required|regex:/^1[345789][0-9]{9}$/','captcha' => 'required','key' => 'required'], ['account.required' => '手机号码必填','account.regex' => '手机号码错误','captcha.required' => '图形验证码必填!','key.required' => 'Key必填!']);if ($validator->fails()) {//抛出自定义异常,返回错误结果到前端throw new ApiException($validator->errors()->first(),400);}//检测验证码是否匹配$rules = ['captcha' => 'required|captcha_api:'. request('key') . ',default'];$validator = Validator::make(request()->all(), $rules);if ($validator->fails()) {throw new ApiException('error','验证码不匹配!',400);} else {//查询是否已经注册$find_user = Member::where('mobile', $request['mobile'])->first();if ($find_user) {throw new ApiException('error','手机号已被注册,请登陆!',400);}//将短信验证码服务封装到service中,方便在不同的业务中调用if ($sms->sendSMS(request('mobile'),$request['type']) == 'success') {return response()->json(['code' => 200,'message' => '短信验证码发送成功!']);}}}
4、用户注册信息接口
/*** 会员注册* @param Request $request* @param SmsService $service* @return JsonResponse* @throws ApiException*/public function register(Request $request, SmsService $service){$validator = Validator::make($request->toArray(), ['account' => 'required|regex:/^1[345789][0-9]{9}$/','sms_code' => 'required|numeric','company_name' => 'required','name' => 'required'], ['company_name.required' => '公司名称必填','name.required' => '用户姓名必填','account.required' => '手机号必填','account.regex' => '手机号格式不正确','sms_code.required' => '短信验证码必填','sms_code.numeric' => '短信验证码是数字']);if ($validator->fails()) {throw new ApiException($validator->errors()->first(),400);}//查询是否已经注册$find_user = DB::table(Member::TABLE)->where('account', $request['account'])->first();if ($find_user) {throw new ApiException('手机号已被注册');}//验证短信验证码$redis_key = $service->smsCodeRedisKey($request['account']);$redis_sms_code = Redis::connection('verify_code')->get($redis_key);if ($request['sms_code'] != $redis_sms_code) {throw new ApiException('验证码错误');}// 验证通过--删除短信验证码Redis::connection('verify_code')->del([$redis_key]);//生成用户Token$member_token = $this->createMemberToken($request['account']);// 保存会员信息$ret = DB::table(Member::TABLE)->insertGetId(['account' => $request['account'],'member_token' => $member_token,'company_name' => $request['company_name'],'name' => $request['name'],'last_login_time' => date('Y-m-d H:i:s'),'created_at' => date('Y-m-d H:i:s'),'updated_at' => date('Y-m-d H:i:s')]);if (!$ret) {throw new ApiException('注册失败,请重试');}//注册成功之后直接返回登录的token给前端return response()->json(['status' => 200,'message' => '注册成功','data' => ['account' => $request['account'],'member_token' => $member_token]]);}
Laravel后端接口使用mews/captcha验证码注册+登录流程讲解相关推荐
- php 短信验证登录,短信验证码注册登录的实现,php接入的3种方法(附示例)
上周,有朋友需要帮忙做一个关于手机短信验证码注册登录的功能,之前没有做过,于是我查查资料,汇总出PHP接入短信验证码的3种方法,现在和大家分享: 1.cURL $curl = curl_init(); ...
- laravel 使用mews/captcha 验证码
laravel version: 5.5.* composer 安装 安装需要的包 composer require mews/captcha 配置: 在 config/app.php 中 找到 al ...
- Laravel 接口开发中的验证码注册
验证码类 首先将验证码接口平台的配置项放进配置文件中,如果你有其他三方平台,那么就放在一起.假设项目的三方平台的配置文件命名为 config/param.php return [/** 短信*/'sm ...
- 抖音实战~手机号验证码一键注册登录流程(限制手机终端登录)
文章目录 一.手机号+验证码 二.前端 2.1. 点击登陆流程 2.2. 点击登录源码 三.后端登录 3.1. 登录流程图 3.2. 流程简述 3.3. 手机号验证码登录流程 一.手机号+验证码 二. ...
- springboot整合redis之用户手机验证码注册登录
目录 1搭建项目开发环境 1.1安装redis 1.1.1下载redis 1.1.2安装redis 1.1.3设置redis为windows服务 安装为windows服务 1.2启动idea 1.3增 ...
- 使用阿里云短信验证码API发送短信验证码(配置,获取短信验证码,注册,登录,密码重置)
获取阿里云短信验证码需要的配置信息. 如果是新用户,可以免费领取3个月,老用户的话就只能购买了,但是也不贵. 申请短信签名 申请短信模板 编写发送短信验证码的工具类 代码中我已经进行了详细的注释,也写 ...
- Security实现手机验证码注册登录
准备工作: <!-- 导入security依赖 --> <dependency><groupId>org.springframework.boot</grou ...
- 抖音实战~手机号密码一键注册登录流程(限制手机终端登录)
文章目录 一.手机号+密码 二.前端 2.1. 点击登陆流程 2.2. 点击登录源码 三.后端登录 3.1. 登录流程图 3.2. 流程简述 3.3. 手机号验证码登录流程 一.手机号+密码 二.前端 ...
- kaggle网站注册登录流程详细介绍(小白必看)
Kaggle是一个为数据科学和机器学习提供竞赛.数据集和工具的在线平台. 该网站通过向用户提供不同领域的实际问题和数据集,吸引了全球数据科学家和机器学习从业者的关注.Kaggle还为用户提供机器学习模 ...
最新文章
- 两种ICP的改进算法:PLICP与NICP
- ML顶会论文都可复现吗?来挑战一下,还能拿500美元补贴
- Android Material Design之Toolbar与Palette
- java replaceall函数_JAVA中string.replace和string.replaceAll的区别及用法
- elasticsearch集群搭建-windows
- (c语言)输出1到100之间的所有素数
- [LeetCode#127]Word Ladder
- 阶段3 2.Spring_09.JdbcTemplate的基本使用_2 JdbcTemplate的概述和入门
- 这可能是有史以来最详细的JNI入门教程
- Spark03:Spark安装部署【集群】:Standalone模式以及ON YARN模式
- PyQt5+Python+Excel链家二手房信息爬取、可视化以及数据存取
- 学术扫盲之期刊,数据库,会议都是什么
- uni-app二维码生成,点击按钮弹框展示二维码
- STM32白话文教程(三)内置按键模块、外接按键检测 三句话让你玩明白按键 水银倾斜模块
- 风暴控制(storm control)
- 鸿蒙开发实例 | 分布式涂鸦
- 石墨烯能带matlab,锯齿石墨烯能带matlab计算程序
- CUDA安装失败的解决方法(Win10)
- 金发男孩 fair-haired boy
- aws rds mysql 连接_python – 连接到amazon rds上的mysql数据库