laravel 【mews/captcha】图片验证码 api接口形式获取、验证,不通过session

Laravel后端接口使用mews/captcha验证码注册+登录流程讲解 大致的流程讲解: 注册流程: 获取图形验证码并正确填写->请求注册验证短信->填写注册的用户信息+短信验证码->用户注册成功 登录流程: 前端请求短信->已注册用户:返回登录的验证短信->用户登录成功 前端请求短信->未注册用户:提示用户注册 本文主要讲解后端laravel代码的实现注册的流程,登录流程比较简单,不去具体讨论,结合具体业务进行操作 1、安装 mews/captcha 官方仓库地址:GitHub - mewebstudio/captcha: Captch 阅读详情

[mews/captcha]

首先给出扩展GitHub地址:https://github.com/mewebstudio/captcha

前期准备与说明

在laravel 中使用此扩展,正常的用法是通过session来保存与验证用户输入的验证码是否正确,但我目前的项目是前后台彻底分离的。前台使用vue框架来搭建,后台用laravel来做api后台的接口。前后台通过jwt来标识用户。所以没法使用session来使用这个扩展,百度了好久,无用,最终还是在官方论坛找到解决方案,在此贴出方案,以便后来人查阅
  1. 在laravel中引入此扩展【我的框架版本laravel5.5】
    composer require mews/captcha 
    
  2. 找到config/app.php下的providers,添加如下代码
    \Mews\Captcha\CaptchaServiceProvider::class,
    
  3. 找到config/app.php下的aliases,添加如下代码
    'Captcha' => Mews\Captcha\Facades\Captcha::class,
    
  4. 发布配置文件
    php artisan vendor:publish
    
    之后便可以在 config/captcha.php下,配置验证码
    return [
        'default'   => [
            'length'    => 5,
            'width'     => 120,
            'height'    => 36,
            'quality'   => 90,
        ],
        // ...
    ];
    

正文开始

因为正常用session的使用方案比较简单,在此不赘述。

下面放上通过api来验证的前后端的关键代码

  1. PHP返回验证码

    //路由
    Route::get('/cp', '\App\Http\Api\V1\Login\LoginController@captcha');
    //代码
    public function captcha()
    {
       return $this->response->array([
           'status_code' => '200',
           'message' => 'created succeed',
           'url' => app('captcha')->create('default', true)
       ]);
    }
    

    请求返回如下图:
    请求验证码接口返回的数据

    说明:这里返回的url.img是base64后的图片,可直接放入img标签中的src属性中。key值是与图片绑定的数值,之后需传给后台验证。

  2. vue发起请求验证码

    ////html关键代码
    <el-form-item>
        <img src="../assets/images/test@2x.png" alt="">
        <el-input type='text' v-model="ruleForm2.captcha" @keyup.enter="submitForm('ruleForm2')"></el-input>
        <el-input type='hidden' v-model="ruleForm2.key" @keyup.enter="submitForm('ruleForm2')"></el-input>
    </el-form-item>
    
    <el-form-item>
        <div class="captcha_img">
            <img @click="changeCodeImg"  :src="imgcode" alt="图片验证码">
        </div>
    </el-form-item>
    
    ////js请求方法
    get_cp:() =>
        axios({
          url:host.management + '/cp',
          method: 'GET',
    	}),
    	
    ////js处理获取请求后的值
    changeCodeImg(){
    	api.get_cp().then((result) => {
              if(result.status_code == 200){
                  this.imgcode = result.url.img
                  this.ruleForm2.key = result.url.key
              }
         })
    }
    

    效果如下图:
    效果图

  3. vue发起登录认证验证

    submitForm(formName) {
        this.$refs[formName].validate((valid) => {
          if (valid) {
            let data = {name: this.ruleForm2.name, password: this.ruleForm2.password , captcha: this.ruleForm2.captcha, key:this.ruleForm2.key}
            api.login(data).then((result) => {
              if (result.status_code === 200) {
                //验证成功............
              } else {
               //验证失败.............
               //重新请求验证码
                this.ruleForm2.captcha = '';
                this.changeCodeImg();
              }
            })
          } else {
            console.log('error submit!!');
            return false;
          }
        });
    }
    
  4. PHP关键验证代码

    ////路由,这里是dingoApi扩展的写法
    $api->post('login','LoginController@login');
    ////验证操作
    if (!captcha_api_check($request->captcha, $request->key)){
    	return $this->response->array(['status_code' => 400, 'message' => '验证码不匹配' ]);
     }
    

    这里有两种方式来验证,第一种就是上面的这种只通过一个函数的方式,第二种是使用validate来验证:

    $data = $req->all();
    
    $validator = Validator::make($data, [
        'ckey' => 'required',
        'captcha' => 'required|captcha_api:' . $req->input('ckey')
    ]);
    
    if ($validator->fails()) {
        return [
            'msg' => 'Validation failed',
            'errors' => $validator->messages(),
        ];
    } else {
        return [
            'msg' => 'Validation passes'
        ];
    }
    

最后通过语句来总结一下整个流程
首先是vue请求图片接口,接口返回图片的地址与key值。用户填写完后,要把这个key值与用户填写的值一同传给后台做验证。就这么简单。

结束 THE END

Laravel-5.5验证码mews captcha laragou环境开发1、安装扩展包 ,安装前确认当前环境支持composer2、 $ composer require "mews/captcha:~2.0"    (耐心等待)3、安装完成后执行:$ php artisan vendor:publish 生成配置文件config/captcha     若没有生成   可将mews里面的config里面的captcha .php复制过去3、前台... 阅读详情

相关推荐

VCS和UVM常用编译选项

VCS编译选项 -full64 在64bit模式下编译、仿真,用于64位操作系统 -j8 指定编译器可以并行编译的进程数为8 -timescale=1ns/1ps 指定仿真时间和精度 +libext+.v+.V+.sv+.svh 识别.v、.sv、.svh等多种格式文件 -sverilog 支持system verilog 编译 -f xxx.lisf 指定包含所有设计文件列表的文件名 -top test 设置顶层模块为test。(指包含.

qq_40571921的博客 9934

详解laravel中使用mews/captcha、前后端分离

文章目录1.下载mews/captcha2.找到config\app.php中的providers,添加如下代码3.找到config\app.php中的aliases,添加如下代码4.发布配置文件5.控制器代码6. 后端验证代码7.一些问题解析8.结语参考文章 废话少说,直接开始。 1.下载mews/captcha 默认下载的是最新版,我这里下载的是3.2版本。 composer require mews/captcha 2.找到config\app.php中的providers,添加如下代码 关于P

最美不过下雨天 7752

手把手教你用C++和NI-VISA写个简易仪器上位机(附QT工程配置)

本文详细介绍了如何使用C++和QT框架结合NI-VISA驱动开发跨平台仪器控制上位机软件。从Ubuntu环境配置、VISA通信核心架构设计到QT界面与业务逻辑解耦,提供了完整的实战指南和代码示例,帮助开发者快速构建专业级仪器控制程序。

weixin_42522374的博客 274

mews/captcha

mews/captcha 是一个非常易于集成的图片验证码扩展包,使用此扩展包可以分分钟给你的网站加上验证码功能。 完整的高质量扩展包推荐列表,请前往:下载量最高 100 个 Laravel 扩展包推荐 1. 安装 1). 使用 composer 安装: composer require mews/captcha 2). 修改 config/app 文件,添加 ServiceP

qq_36663951的博客 2023

紫光同创PGL50H开发板实战:盘古50KN网口板的高速通信与数据处理

本文详细介绍了紫光同创PGL50H开发板(盘古50KN网口板)在高速通信与数据处理领域的实战应用。文章从开箱、核心芯片解析、开发环境搭建入手,重点讲解了如何配置与测试其8路千兆以太网接口和SFP光纤接口,并深入探讨了FPGA与DDR3协同进行多路数据汇聚处理的系统架构与调试方法,为网络通信与高速数据处理系统开发提供了宝贵的实践经验。

weixin_28256233的博客 453

实测对比:Gromacs GPU版vsCPU版性能差异到底有多大?2023最新基准测试

本文通过2023年最新基准测试,详细对比了Gromacs GPU版与CPU版的性能差异。测试显示,GPU版本在计算速度上可提升54倍,同时显著降低内存需求和能耗成本。文章还提供了GPU版安装优化实践和硬件选购指南,为计算生物学研究提供关键参考。

weixin_29243063的博客 337

php api session 验证,laravel 【mews/captcha】图片验证码 api接口形式获取、验证,不通过session...

[mews/captcha]前期准备与说明在laravel 中使用此扩展,正常的用法是通过session来保存与验证用户输入的验证码是否正确,但我目前的项目是前后台彻底分离的。前台使用vue框架来搭建,后台用laravel来做api后台的接口。前后台通过jwt来标识用户。所以没法使用session来使用这个扩展,百度了好久,无用,最终还是在官方论坛找到解决方案,在此贴出方案,以便后来人查阅在lar...

weixin_39844284的博客 379

Win11系统下Abaqus2022与VS2022+oneAPI2023环境配置全攻略(附VUMAT子程序避坑指南)

本文详细指导在Windows 11系统下,为Abaqus 2022配置Visual Studio 2022与Intel oneAPI 2023的Fortran编译环境,以支持VUMAT等用户子程序开发。内容涵盖软件安装顺序、环境变量关联、快捷方式修改及关键验证步骤,并提供了首个VUMAT子程序的实战编写与模型验证方法,帮助用户高效搭建稳定可靠的仿真开发平台。

pytorch8learner的博客 317

Laravel安装验证码扩展包

第二步 根目录 运行以下命令生成配置文件 config/captcha.php。提供的辅助方法,用于生成验证码图片链接。第一步 第三方扩展包。

hehe_z的博客 413

基于Simulink的电机功率因数校正仿真

PF=SP​=视在功率有功功率​=cosϕ⋅Irms​I1​​(非正弦时)位移因数(cosϕ):基波电压电流相位差畸变因数(I1​/Irms​):谐波导致电流有效值增大本文带你完成了电机系统功率因数校正的Simulink仿真,实现了:✅ 理解了低功率因数的成因与危害✅ 搭建了无PFC、无源PFC、有源PFC三种对比模型✅ 掌握了Vienna整流器建模与dq解耦控制方法✅ 实现了PF与THD的自动计算与评估✅ 验证了有源PFC在PF、THD、稳定性上的全面优势。

amy_mhd的博客 154

《AI Coding手册:Claude Code、OpenAI Codex、OpenClaw深度解析与实战指南》

AI编码技术经历了从简单规则匹配到深度神经网络,再到当前智能体(Agent)架构的范式转变。第一阶段:静态代码补全(2010-2018)早期工具如IntelliSense、Emmet基于语法分析和固定模板提供代码提示。这类系统依赖预定义规则,缺乏语义理解能力,仅能处理局部代码片段。第二阶段:统计语言模型(2018-2020)以GPT-2、TabNine为代表,引入基于大规模代码训练的神经语言模型。

AI天才研究院 1033

Laravel文档阅读笔记-mews/captcha的使用(验证码功能)

这里用的是Laravel8。这里验证码要使用到fileInfo的功能,需要提前让php加载此dll or so,在php.ini中修改:验证码功能最终实现的效果是: 首先添加相关库: 其次再生成对应的config文件: 输入你那边mews/captcha相关的选项:我这里是选项11。默认验证码为9位,这里太多了,看不清,修改下captcha.php 这里default.length的大小本来是9的,我改成了5。生成对应的Controller 在CaptchaValidationContro

IT1995的博客 1713

Allegro如何设置走线自动删除重复走线操作指导

Allegro如何设置走线是自动删除重复走线操作指导在PCB布线的时候,点到点需要重复走一段线的时候,希望原来的线段自动被删除,Allegro设计的时候支持这个操作如下图,重复走中间的线段的时候,希望下方的走线自动删除具体操作如下This section is describe what the function allegro have ,helpfully could let user know more about allegroAllegro Design and Analysis includes

weixin_54787054的博客 4499

Laravel笔记-前后端分离时验证码校验(mews/captcha)

关键就是这个catcha_api_check函数,第一个是用户输入的验证码,第二个是key。关键就是这个key,图片内容是img,也就是说,前端把这个key、用户输入发送给后端。安装mews/captcha已经有笔记了,下面来说下前后端分离时该如何处理。后端通过这个key找到正确的验证码内容,和用户输入的做对比,就可以了。这里要知道一点,搭建好mews/captcha后,默认会开放。这个就是获取验证码的url。...

IT1995的博客 2529

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Laravel验证码最佳实践:使用mews/captcha构建安全的用户注册系统

在当今网络环境中,用户注册系统的安全性至关重要,而验证码是抵御恶意注册和机器人攻击的第一道防线。mews/captcha作为一款强大的Laravel验证码扩展包,提供了简单高效的解决方案,帮助开发者轻松实现安全可靠的用户验证机制。本文将详细介绍如何使用mews/captcha构建安全的用户注册系统,从安装配置到实际应用,让你快速掌握Laravel验证码的最佳实践。 ## 为什么选择mews/ca

gitblog_00757的博客 846

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

laravel5.8中实现验证码组件的安装和验证

本篇文章主要讲解使用laravel5.8自带的验证码库实现验证码验证的效果教程。通过本教程你可以快速接入到自己的项目中开发相应的验证功能。作者:任聪聪 (rccblogs.com)日期:2023年12月17日。

任聪聪的博客 2093

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

mews/captcha 使用实例

mews/capthca 是一个 Laravel 5 的验证码扩展包,可以方便的为你的项目添加验证码。

jason_hou的博客 3350

laravel 验证码的导入与使用(mews/captcha)

一、引入 使用composer引入: composer require mews/captcha=version(如v3.0.1) 引入成功后更新composer :composer update 二、引入成功后配置: config/app.php 文件中的 providers中加入:Mews\Captcha\CaptchaServiceProvider::class, aliases中加入:'Captcha' => 'Mews\Captcha\Facades\Captcha', co

Lindong_Jen的博客 804

mews/captcha的前世今生,知识体系一共包含哪些部分?

mews/captcha的价值在于:将复杂的验证码生成与验证逻辑封装成简单易用的接口,让开发者无需关注图形处理细节,只需通过配置和几行代码就能实现安全可靠的验证码功能。它的核心设计思路是“平衡安全与体验”——既通过随机字符、会话绑定和图形干扰确保安全性,又通过灵活配置和多种验证码类型适应不同场景的用户体验需求。对于PHP开发者,尤其是Laravel用户,mews/captcha提供了一条实现验证码功能的捷径,让安全防护的实现变得简单高效。

长风破浪会有时的博客 1142

Laravel框架安装/使用验证码(captcha)

框架版本:5.8+;composer版本:2.1+

爱吃五花肉EMin的博客 931

开源项目 mewebstudio/captcha 使用教程

``` captcha/ ├── src/ │ ├── Captcha.php │ ├── CaptchaServiceProvider.php │ └── helpers.php ├── config/ │ └── captcha.php ├── resources/ │ └── lang/ │ ├── en/ │ │ └── captcha.ph...

gitblog_00945的博客 736

Laravel-5.1 ---- 将mews captcha整合到项目中!

经过摸索,终于能在laravel 5.1中应用验证码了。 因为英语渣五水平,所以几乎没搜索到什么有用的,于是考虑在github上搜索验证码包! 提示: github上的package中往往会有使用说明,照着上面的实现,一般都能做出来。 我使用的是mews captcha git 上的地址:https://github.com/mewebstudio/captcha上面的使用很详细了...

weixin_30516243的博客 287

mews/captcha深度解析:从配置到自定义的完整教程

想要为你的Laravel应用添加强大的验证码保护吗?mews/captcha包提供了简单易用的解决方案,支持Laravel 5到12版本,让网站安全防护变得轻而易举!✨ ## 🎯 为什么选择mews/captcha? mews/captcha是专门为Laravel框架设计的验证码包,它基于Intervention Image库,提供了丰富的配置选项和灵活的扩展性。无论你是需要传统的文字验证码

gitblog_00008的博客 345
上一篇: php 调用百度sms来发送短信
下一篇: 自动领取起点网页版的经验值
EricSanchez
博客等级 码龄10年 23粉丝 28原创
评论 9
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值