vue+spring boot实现校验码功能


Posted in Vue.js onMay 27, 2021

本文实例为大家分享了vue+spring boot实现校验码功能的具体代码,供大家参考,具体内容如下

用vue写了一个校验码来玩玩,样子如下:

vue+spring boot实现校验码功能

1.img标签

<img
     ="height:40px; width: 100px; cursor: pointer;"
     ref="imgIdentifyingCode"
     :src="selectedLogoPicture.imgUrl"
     class="logoImg"
 >

2.js代码

/**
     * 获取校验码
     */
    getIdentifyingCode() {
      let selft = this;
      //let pic = this.$refs.imgIdentifyingCode
      selft.loadingChack = true;
      let uuid = Utils.getUuid(32, 16);
      this.$store.state.uuid = uuid;
      this.$api.reader.getVerify(
        { responseType: "arraybuffer", uuid: uuid },
        r => {
          selft.loadingChack = false;
          selft.selectedLogoPicture.imgUrl = "data:image/png;base64," + r;
        }
      );
    },

3.controller

@RequestMapping("/getVerify")
 public void getVerify(@RequestParam String uuid, HttpServletRequest request, HttpServletResponse response) {
  response.setContentType("image/jpeg");// 设置相应类型,告诉浏览器输出的内容为图片
  response.setHeader("Pragma", "No-cache");// 设置响应头信息,告诉浏览器不要缓存此内容
  response.setHeader("Cache-Control", "no-cache");
  response.setDateHeader("Expire", 0);
  userService.getRandcodedDawTransparent(uuid, request, response);// 输出验证码图片方法
 }

4.service

@Override
 public void getRandcodedDawTransparent(String uuid, HttpServletRequest request, HttpServletResponse response) {
  try {
   Map<String, Object> map = CodeUtil.getRandcodedDawTransparent();
   // 将生成的随机字符串保存到session中
   log.info("==保存的uuid:"+uuid);
   log.info("==保存的code:"+map.get("code"));
   sessionUtil.saveCode(uuid, map.get("code"));

   response.setContentType("image/png");
   OutputStream out = response.getOutputStream();

   out.write((byte[]) map.get("img"));
   out.flush();
   out.close();
  } catch (IOException e) {
   log.error(e.getMessage());
  }
 }

5.util

public static Map<String, Object> getRandcodedDawTransparent() throws IOException {
  Map<String, Object> rsMap = new HashMap<>();
  // 创建BufferedImage对象
  BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
  // 获取Graphics2D
  Graphics2D g2d = image.createGraphics();

  // 增加下面代码使得背景透明
  image = g2d.getDeviceConfiguration().createCompatibleImage(width, height, Transparency.TRANSLUCENT);
  g2d.dispose();
  g2d = image.createGraphics();

  g2d.setFont(new Font("Times New Roman", Font.ROMAN_BASELINE, 18));// 字体大小
  g2d.setColor(getRandColor(110, 133));// 字体颜色

  // 绘制干扰线
  for (int i = 0; i <= lineSize; i++) {
   drowLine(g2d, width, height);
  }
  // 绘制随机字符
  String randomString = "";
  for (int i = 1; i <= stringNum; i++) {
   randomString = drowString(g2d, randomString, i);
  }
  log.info(randomString);
  rsMap.put("code", randomString);
  g2d.dispose();
  ByteArrayOutputStream baos = new ByteArrayOutputStream();// io流
  ImageIO.write(image, "png", baos);// 写入流中
  byte[] bytes = baos.toByteArray();// 转换成字节
  bytes = Base64.encodeBase64(bytes);
  rsMap.put("img", bytes);

  return rsMap;
 }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Vue.js 相关文章推荐
vue打开其他项目页面并传入数据详解
Nov 25 Vue.js
vue element-ul实现展开和收起功能的实例代码
Nov 25 Vue.js
vue中如何自定义右键菜单详解
Dec 08 Vue.js
手写Vue源码之数据劫持示例详解
Jan 04 Vue.js
深入了解Vue动态组件和异步组件
Jan 26 Vue.js
如何使用vue3打造一个物料库
May 08 Vue.js
SSM VUE Axios详解
Oct 05 Vue.js
Vue中Object.assign清空数据报错的解决方案
Mar 03 Vue.js
vue3引入highlight.js进行代码高亮的方法实例
Apr 08 Vue.js
vue如何实现关闭对话框后刷新列表
Apr 08 Vue.js
vue特效之翻牌动画
Apr 20 Vue.js
vue使用element-ui按需引入
May 20 Vue.js
vue-cropper组件实现图片切割上传
May 27 #Vue.js
vue-cropper插件实现图片截取上传组件封装
May 27 #Vue.js
HTML+VUE分页实现炫酷物联网大屏功能
Vue实现动态查询规则生成组件
详解vue身份认证管理和租户管理
vue点击弹窗自动触发点击事件的解决办法(模拟场景)
vue-element-admin项目导入和导出的实现
May 21 #Vue.js
You might like
《猛禽小队》:DC宇宙的又一超级大烂片
2020/04/09 欧美动漫
用在PHP里的JS打印函数
2006/10/09 PHP
Linux下创建nginx脚本-start、stop、reload…
2014/08/03 PHP
新浪SAE搭建PHP项目教程
2015/01/28 PHP
php的laravel框架快速集成微信登录的方法
2016/12/12 PHP
用 javascript 实现的点击复制代码
2007/03/24 Javascript
IE event.srcElement和FF event.target 功能比较
2010/03/01 Javascript
jquery 实现checkbox全选,反选,全不选等功能代码(奇数)
2012/10/24 Javascript
Javascript中常见的校验如域名、手机、邮箱等等
2014/01/02 Javascript
JS创建自定义表格具体实现
2014/02/11 Javascript
用Jquery实现滚动新闻
2014/02/12 Javascript
JavaScript判断变量是否为空的自定义函数分享
2015/01/31 Javascript
AngularJS指令用法详解
2016/11/02 Javascript
原生js实现可拖动的登录框效果
2017/01/21 Javascript
移动端效果之Swiper详解
2017/10/09 Javascript
浅谈Vue SPA 首屏加载优化实践
2017/12/15 Javascript
PM2自动部署代码步骤流程总结
2018/12/10 Javascript
layui表格数据重载
2019/07/27 Javascript
Element-ui el-tree新增和删除节点后如何刷新tree的实例
2020/08/31 Javascript
Python 连连看连接算法
2008/11/22 Python
Python中使用 Selenium 实现网页截图实例
2014/07/18 Python
Flask框架Flask-Login用法分析
2018/07/23 Python
python的继承知识点总结
2018/12/10 Python
Python 3.3实现计算两个日期间隔秒数/天数的方法示例
2019/01/07 Python
使用python进行广告点击率的预测的实现
2019/07/04 Python
Python datetime模块的使用示例
2021/02/02 Python
CSS3 实现的加载动画
2020/12/07 HTML / CSS
巴西家用小家电购物网站:Polishop
2016/08/07 全球购物
英国名牌服装购物网站:OD’s Designer
2019/09/02 全球购物
如何在发生故障的节点上重新安装 SQL Server
2013/03/14 面试题
职工趣味运动会方案
2014/02/10 职场文书
无刑事犯罪记录证明
2014/09/18 职场文书
《司马光》教学反思
2016/02/22 职场文书
世界十大狙击步枪排行榜
2022/03/20 杂记
「睡美人」爱洛公主粘土人开订
2022/03/22 日漫
JavaScript获取URL参数的方法分享
2022/04/07 Javascript