请求后端返回的验证码显示的情况

2023-11-19

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

在实际的项目中验证码登录几乎是每个开发人员的必备操作技能了,但是前端获取到后端的验证码数据有很多种方式,对于初级开发人员来说有时候会比较的懵,所以在此总结开发中比较常见的的几种验证方式,便于以后开发中遇到后可以直接使用


提示:以下是本篇文章正文内容,下面案例可供参考

一、情况一:数据是图片文件流

前端需要展示验证码图片,希望后台直接返回的是图片地址,但是后端给的是的文件流而不是一个图片地址,所以这种情况需要把文件流转为base64的格式展示出来
在这里插入图片描述
这种情况是没有加 responseType: 'arraybuffer’导致的

在这里插入图片描述

<el-form-item label="">
          <el-input
            type="code"
            v-model.trim="form.code"
            placeholder="请输入验证码"
            style="width: 105px"
            @keyup.enter.native="login"
          ></el-input>
          <img
            :src="codeImg"
            class="codeImg"
            @click="oNcodeImg"
          />
</el-form-item>

oNcodeImg() {
      // var num = Math.ceil(Math.random() * 10); //生成一个随机数(防止缓存)
      this.$axios({
        method: 'post',
        url: '/sys/user/code?random=' + this.random,
        responseType: 'arraybuffer' //该字段需要添加,不然返回的res.data会是乱码
      }).then((res) => {
        console.log('返回的验证码数据:', res);
        if (res.headers['content-type'].indexOf('json') !== -1) {
          this.tips('验证码获取次数过多,请稍后重试', 'warning');
        } else {
          this.codeImg =
            'data:image/png;base64,' +
            btoa(new Uint8Array(res.data).reduce((data, byte) => data + String.fromCharCode(byte), ''));
        }
      });
    },

二、情况二:直接返回是图片

返回的响应里直接是验证码,接收的时候甚至不用ajax/axios…
在这里插入图片描述

<!-- 验证码 -->
        <el-form-item prop="code">
          <div class="vertify-code-box">
            <el-input
              v-model.trim="loginForm.code"
              type="code"
              placeholder="请输入验证码"
              class="vertify-code"
              ref="code"
              @keyup.enter.native="login"
            ></el-input>
            <div class="imgDiv">
              <img
                :src="imgSrcUrl"
                @click="oNcodeImg"
                class="img"
              />
            </div>
          </div>
      </el-form-item>

	oNcodeImg() {
	//直接访问,不需要ajax/axios我到现在都不是很清楚这什么道理
      this.imgSrcUrl =
        "/api/web/adminuser/captcha.jpg?random=" + Math.random() * 10;
      console.log("this.imgSrcUrl", this.imgSrcUrl);
      // this.$axios({
      //   method: "GET",
      //   url: this.codeImgSrc,
      // })
      //   .then(() => {
      //     this.imgSrcUrl = "http://localhost:8080/api" + this.codeImgSrc;
      //   })
      //   .catch((error) => {
      //     console.log(error, "login error");
      //   });
    },

情况三:uni小程序的登录验证

与情况一类似后端传过来的数据是图片文件流,但是小程序上代码要做一些处理如下
在这里插入图片描述
在这里插入图片描述

<view class="input flex_between">
        <u-input
          v-model="login.code"
          maxlength="6"
          type="code"
          :custom-style="inputStyle"
          placeholder-style="font-size:32rpx;line-height:40rpx;color:#CED4E0"
          placeholder="请输入验证码"
          height="68"
        />
        <view class="code">
          <img
            :src="codeImg"
            @click="oNcodeImg"
          />
          <!--:src="codeImg" <text @tap="getCode">{{ tips }}</text> -->
       </view>
 </view>

//获取与web一样的验证码
    oNcodeImg() {
      this.util.http_demo_1(
        'POST',
        this.server.getCode + '?random=' + this.random,
        { responseType: 'arraybuffer' },
        (res) => {
          console.log('res:', res);
          console.log(res.headers['Content-Type'].indexOf('image') == -1);
          if (res.headers['Content-Type'].indexOf('image') == -1) {
            this.tips('验证码获取次数过多,请稍后重试', 'warning');
          } else {
            const arrayBuffer = res.data;
            //将arrayBuffer数据转换成base64格式即可显示
            let url = `data:image/jpeg;base64,${uni.arrayBufferToBase64(arrayBuffer)}`;
            this.codeImg = url;
          }
        },
        (res) => {
          console.log('错误:', res);
        }
      );
    }

最后

目前遇到的验证码登录就以上三种情况比较多了,还有一种是手机短信验证,那个相对简单,只要一个按钮发送请求就可以了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

请求后端返回的验证码显示的情况 的相关文章

  • 使用 获取用于 javascript 的 RSA 密钥?

    我的 Web 项目需要一个 RSA 密钥对 虽然有一些库 但我认为依靠浏览器 为了安全性和速度 为我生成密钥是个好主意 是否可以使用注册机或其他浏览器 API 来执行此操作 我不知道如何从注册机获取密钥 它们似乎是在提交时生成的 但我不想将
  • 如何通过aws-sdk(javascript或node)获取s3存储桶大小

    我尝试使用 javascript nodejs aws sdk 查找 获取 s3 存储桶信息 但没有找到这样的 api 如何通过 aws sdk javascript 或 node api 获取 s3 存储桶大小 信息 每天一次向 Clou
  • jQuery UI sortable 和 contenteditable=true 不能一起工作

    我正在创建一个列表并希望使其项目可排序和可编辑 所以我这样做 ul li span A span li li span B span li li span C span li ul ul list sortable http jsfiddl
  • 如果浏览器在 asp .net 中关闭,请从浏览器中注销?

    我的要求有点复杂 用户正在使用 Web 浏览器访问数据库 而在访问数据库时 如果用户关闭活动页面而不是注销会话 该会话需要自动注销 有人可以指导我如何做这个吗 我在母版页中使用了jquery onbeforeunload 我收到消息离开页面
  • 光滑的旋转木马不工作

    我一直在尝试简单地实现 Slick Carousel 的工作 我已按照 Git 页面上的说明进行操作 https github com kenwheeler slick https github com kenwheeler slick 这
  • Typescript:如何在自定义过滤器中使用角度 $filter

    如何在自定义过滤器中使用 Angular filter 如何注入 filter依赖 module Filters export class CustomFilter public static Factory return function
  • 如何在一段特定时间后在后台运行 ajax 调用? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想在一段特定的时间后显示警报消息 您想继续吗 如果用户同意 则 ajax 调用必须在后台运行 否则取消 ajax 调用 那么请告诉我
  • Rails 递归地包含 javascripts 资源文件夹

    我了解如何将一个 JavaScript 文件添加到 Rails 资产管道中 只需添加 require filename 到 application js 但是如何在一个文件夹下包含多个 javascript 文件 vendor assets
  • 离子旋转器未显示

    我用 http 请求填充 Ionic 集合重复列表 但我不想将所有内容直接加载到 DOM 中 因此 我只显示其中一些项目 并在您向下滚动时添加其余项目 为此我实现了无限滚动功能 当我到达页面底部时 它应该显示一个旋转器 但它没有 这些物品至
  • 在 php、ajax 或 javascript 中加载进度?

    任何人都知道如何在系统仍在服务器端获取数据的同时在客户端显示加载进度以及完成的百分比 例如 当我在客户端按下 确定 按钮时 它会调用服务器端从数据库收集数据 整个过程可能需要2到3分钟 如何在客户端显示加载进度 大约加载完成了多少 我怎样才
  • 在 jQuery AJAX 成功中从 MySql 获取特定响应

    好吧 我有这个 ajax 代码 它将在 Success 块中返回 MySql 的结果 ajax type POST url index php success function data alert data My Query sql SE
  • 带时间戳的 Firestore 查询

    如果它是文本字段 我可以使用 where 条件获取数据 但是当我尝试对时间戳字段和日期执行相同操作时 事情不起作用 这是我的代码 home ts firebase firestore collection cities where time
  • 从相机视图中拖动锁定在一定距离/半径处的对象

    我在场景中心有一个相机 距离相机 z 400 处有 1 个球体 其父级位于中心 我想从视图中向上 向下 向左 向右拖动球体 但同时不改变它相对于中心的 z 位置 我最终使用了另一个球体并使其不可见 添加side THREE DoubleSi
  • ReferenceError 和全局对象

    在浏览器中的 JavaScript 中window是全局对象 这意味着在全局范围内定义的每个变量都是window 那么为什么我会得到这个结果 console log window foo No error logs undefined co
  • 仅在首页加载时使用 cookie 加载 colorbox

    我尝试了来自网络的参考代码 仅在页面加载时加载特定元素一次 这是示例代码
  • toLocaleDateString() 在 Chrome 中如何工作?

    我理解了javascript方法toLocaleDateString 使用的计算机设置 让我们来W3Schools 示例 http www w3schools com jsref tryit asp filename tryjsref to
  • `ie9` - contenteditable false 在父级可编辑时不起作用

    我正在尝试制作内容可编辑和不可编辑的容器 用户可以通过 3 种方式使用它 他们可以将内容与non editable 他们可以将内容与editable 他们可以在不选择其中之一的情况下放置内容 可编辑 我正在努力实现以下目标 content
  • JavaScript 中最长的通用前缀

    我正在尝试解决 Leet Code 挑战14 最长公共前缀 https leetcode com problems longest common prefix 编写一个函数来查找字符串数组中最长的公共前缀字符串 如果没有公共前缀 则返回空字
  • NodeJS:如何获取服务器的端口?

    您经常会看到 Node 的示例 hello world 代码 它创建一个 Http Server 开始侦听端口 然后执行以下操作 console log Server is listening on port 8000 但理想情况下你会想要
  • 使用 JQuery 预填充选择字段的下拉选项验证

    我有这个 JQuery 片段来防止选择已在另一个字段中选择的下拉选项 var coll select name service on change function coll each function var val this value

随机推荐

  • 超详细的计算机网络基础知识总结 第四章:网络层

    本文基于 王道计算机考研 计算机网络 其他文章 超详细的计算机网络基础知识 第一章 概述 超详细的计算机网络基础知识 第二章 物理层 超详细的计算机网络基础知识 第三章 数据链路层 超详细的计算机网络基础知识 第五章 传输层 超详细的计算机
  • 如何处理GPU上Error Number:700 an illegal memory access was encounter

    现象描述 GPU上网络运行过程中出现Error Number 700 an illegal memory access was encounter 原因分析 出现该现象 在框架稳定的背景下基本上可以确定是网络中有算子踩显存 因此CUDA上报
  • 毕业三年之际写给可能迷茫的你我

    工作半年 总感觉三分热度 难于沉淀 后劲不足 网上偶遇这篇文章 原来不止我一人是这样 遂转载此文以共勉 转自 http liugang ok iteye com blog 1969907 这些文字其实是在六月中下旬写的 算起来已经有好几个月
  • numpy生成等差等比数列

    文章目录 arange linspace logspace arange numpy arange start stop step dtype None 功能 Return evenly spaced values within a giv
  • java视频压缩

    项目开发中往往有一些时候可能会遇到一些上传视频 这时候我们如果上传一个手机拍摄的1分钟视频 大小110M 可能需要特别长的时间 这个时候就需要我们对视频进行压缩 虽然清晰度有所下降 但是对于一些特定的场景还是很有必要的 ffmpeg主要组成
  • 快速理解各类软件开发过程模型(瀑布模型、螺旋模型、喷泉模型等)

    快速理解各类开发过程模型 瀑布模型 螺旋模型 喷泉模型等等 1 开发模型 基础概念 2 结构化模型 瀑布模型 V模型 3 原型化模型 快速原型模型 增量模型 演化模型 螺旋模型 4 面向对象化模型 喷泉模型 5 其他模型 构建组装模型 6
  • 关于Wince进程外组件~ .

    转载自 http blog csdn net tttyd article details 6223594 Windows CE提供以下几种COM Base的应用 1 Minimal COM提供最基础的COM开发接口 API 每个com对象的
  • Spring中使用RedisTemplate操作Redis(spring-data-redis)

    https www cnblogs com songanwei p 9274348 html RedisTemplate如何检查一个key是否存在 return getRedisTemplate hasKey key 由一个问题 复习了一下
  • JAVA中的Runtime启动子进程并杀掉

    一 前言 最近在项目中需要将一个java工程打成一个jar包 并在运行jar包后启动通过java中的runtime类来启动一个nodejs的服务 在做的过程中遇到了一些不小的坑 下面就将其记录下来 二 Runtime类 Runtime cl
  • MySQL基础篇【第一篇】 数据库概述及数据准备、常用命令、查看表结构步骤

    作者简介 大家好我是 每天都要敲代码 一位材料转码农的选手 希望一起努力 一起进步 个人主页 每天都要敲代码的个人主页 系列专栏 MySQL专栏 推荐一款模拟面试 刷题神器 从基础到大厂面试题 点击跳转刷题网站进行注册学习 目录 一 数据库
  • Java课题笔记~ SpringBoot基础配置

    二 基础配置 1 配置文件格式 问题导入 框架常见的配置文件有哪几种形式 1 1 修改服务器端口 http localhost 8080 books 1 gt gt gt http localhost books 1 SpringBoot提
  • ELM:ELM基于近红外光谱的汽油测试集辛烷值含量预测结果对比—Jason niu

    ELM ELM基于近红外光谱的汽油测试集辛烷值含量预测结果对比 Jason niu load spectra data mat temp randperm size NIR 1 P train NIR temp 1 50 T train o
  • IDEA插件-CheckStyle的安装与使用

    目录 一 安装CheckStyle 二 配置CheckStyle 三 使用CheckStyle 一 安装CheckStyle 1 依次访问IDEA gt gt File gt gt Settings gt gt Plugins gt gt
  • 轻松在Firefox中禁用JavaScript

    Want a quick and easy way to toggle JavaScript on and off in Firefox Then you will definitely want to take a good look a
  • 【Linux中高级运维:云计算】第1章:云计算简介+kvm虚拟机安装+日常操作和管理+快照管理

    1 什么是云计算 云计算是一种按量付费的模式 云计算的底层是通过虚拟化技术来实现的 2 云计算的服务类型 2 1IAAS 基础设施即服务 虚拟机 ecs openstack 2 2PAAS 平台即服务 php java docker容器 2
  • 浏览器主页被篡改360篡改浏览器主页,官方四步最完美解决办法

    以前写过一篇浏览器主页被360篡改成他们的主页的文章 那时真的就是气的直接卸载了360 之后通过修改注册表的方式 将主页修改回来 方法很暴力 由于重做了系统 360又被重新安装了回来 结果和以往一样 我的主页还是被强制修改了 但是这次我冷静
  • 3.1-并发控制:互斥

    复习 状态机 状态机 状态机 本次课回答的问题 Q 如何在多处理器上实现线程互斥 本次课主要内容 自旋锁的实现 互斥锁的实现 一 共享内存上的互斥 在共享内存上实现互斥 失败的尝试 mutex bad py 部分 成功的尝试 peterso
  • 3dmax 保存慢 卡死

    解决3DMAX保存慢的方法 方法一 在MAX环境中 按F11会弹出一个编辑框 然后输入 t trackviewnodes n t Max MotionClip Manager deleteTrackViewController t n co
  • 基于tensorflow2.0+使用bert获取中文词、句向量并进行相似度分析

    本文基于transformers库 调用bert模型 对中文 英文的稠密向量进行探究 开始之前还是要说下废话 主要是想吐槽下 为啥写这个东西呢 因为我找了很多文章要么不是不清晰 要么就是基于pytorch 所以特地写了这篇基于tensorf
  • 请求后端返回的验证码显示的情况

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 情况一 数据是图片文件流 二 情况二 直接返回是图片 情况三 uni小程序的登录验证 最后 前言 在实际的项目中验证码登录几乎是每个开发人员的必备操作技能