大致的流程讲解:
注册流程:
获取图形验证码并正确填写->请求注册验证短信->填写注册的用户信息+短信验证码->用户注册成功
登录流程:
前端请求短信->已注册用户:返回登录的验证短信->用户登录成功
前端请求短信->未注册用户:提示用户注册
本文主要讲解后端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验证码注册+登录流程讲解相关推荐

  1. php 短信验证登录,短信验证码注册登录的实现,php接入的3种方法(附示例)

    上周,有朋友需要帮忙做一个关于手机短信验证码注册登录的功能,之前没有做过,于是我查查资料,汇总出PHP接入短信验证码的3种方法,现在和大家分享: 1.cURL $curl = curl_init(); ...

  2. laravel 使用mews/captcha 验证码

    laravel version: 5.5.* composer 安装 安装需要的包 composer require mews/captcha 配置: 在 config/app.php 中 找到 al ...

  3. Laravel 接口开发中的验证码注册

    验证码类 首先将验证码接口平台的配置项放进配置文件中,如果你有其他三方平台,那么就放在一起.假设项目的三方平台的配置文件命名为 config/param.php return [/** 短信*/'sm ...

  4. 抖音实战~手机号验证码一键注册登录流程(限制手机终端登录)

    文章目录 一.手机号+验证码 二.前端 2.1. 点击登陆流程 2.2. 点击登录源码 三.后端登录 3.1. 登录流程图 3.2. 流程简述 3.3. 手机号验证码登录流程 一.手机号+验证码 二. ...

  5. 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增 ...

  6. 使用阿里云短信验证码API发送短信验证码(配置,获取短信验证码,注册,登录,密码重置)

    获取阿里云短信验证码需要的配置信息. 如果是新用户,可以免费领取3个月,老用户的话就只能购买了,但是也不贵. 申请短信签名 申请短信模板 编写发送短信验证码的工具类 代码中我已经进行了详细的注释,也写 ...

  7. Security实现手机验证码注册登录

    准备工作: <!-- 导入security依赖 --> <dependency><groupId>org.springframework.boot</grou ...

  8. 抖音实战~手机号密码一键注册登录流程(限制手机终端登录)

    文章目录 一.手机号+密码 二.前端 2.1. 点击登陆流程 2.2. 点击登录源码 三.后端登录 3.1. 登录流程图 3.2. 流程简述 3.3. 手机号验证码登录流程 一.手机号+密码 二.前端 ...

  9. kaggle网站注册登录流程详细介绍(小白必看)

    Kaggle是一个为数据科学和机器学习提供竞赛.数据集和工具的在线平台. 该网站通过向用户提供不同领域的实际问题和数据集,吸引了全球数据科学家和机器学习从业者的关注.Kaggle还为用户提供机器学习模 ...

最新文章

  1. 两种ICP的改进算法:PLICP与NICP
  2. ML顶会论文都可复现吗?来挑战一下,还能拿500美元补贴
  3. Android Material Design之Toolbar与Palette
  4. java replaceall函数_JAVA中string.replace和string.replaceAll的区别及用法
  5. elasticsearch集群搭建-windows
  6. (c语言)输出1到100之间的所有素数
  7. [LeetCode#127]Word Ladder
  8. 阶段3 2.Spring_09.JdbcTemplate的基本使用_2 JdbcTemplate的概述和入门
  9. 这可能是有史以来最详细的JNI入门教程
  10. Spark03:Spark安装部署【集群】:Standalone模式以及ON YARN模式
  11. PyQt5+Python+Excel链家二手房信息爬取、可视化以及数据存取
  12. 学术扫盲之期刊,数据库,会议都是什么
  13. uni-app二维码生成,点击按钮弹框展示二维码
  14. STM32白话文教程(三)内置按键模块、外接按键检测 三句话让你玩明白按键 水银倾斜模块
  15. 风暴控制(storm control)
  16. 鸿蒙开发实例 | 分布式涂鸦
  17. 石墨烯能带matlab,锯齿石墨烯能带matlab计算程序
  18. CUDA安装失败的解决方法(Win10)
  19. 金发男孩 fair-haired boy
  20. aws rds mysql 连接_python – 连接到amazon rds上的mysql数据库

热门文章

  1. 岛屿问题 (Java) LeeCode
  2. 广通优云入选36Kr2021数字化创新榜单
  3. 2020 论文研究数据之 - 百度指数采集工具
  4. 老闪创业那些事儿(39)——有梦想的春雷
  5. 虚拟机vm无法打开内核设备
  6. 测试方法-边界值/因果图设计
  7. JavaWeb_script
  8. 智能汽车的福音:高通骁龙820A平台
  9. GIS空间分析(三)—— GIS环境下的空间分析
  10. android计步器使用环境,Android 计步器实现