node实现登录图片验证码的示例代码


Posted in Javascript onApril 20, 2018

实现这里的图形验证码我是用的node里svg-captcha模块,可以全部支持字符和数字,全平台支持,用起来很简单。

1.安装

cnpm i svg-captcha --save

2.在使用的地方导入

var svgCaptcha = require('svg-captcha');

3.获取验证码

3-1 安装 cookie-parser ,作用是将获取到的session保存到cookie,方便前端访问验证

cnpm i cookie-parser --save

3-2 使用 cookie-parser

const cookieParase = require('cookie-parser');

app.use(cookieParase());

这样就可以在项目里使用cookie了

3-3 获取验证码

// 获取验证码
 getCaptcha(req, res, next){
  var captcha = svgCaptcha.create({ 
   // 翻转颜色 
   inverse: false, 
   // 字体大小 
   fontSize: 36, 
   // 噪声线条数 
   noise: 2, 
   // 宽度 
   width: 80, 
   // 高度 
   height: 30, 
  }); 
  // 保存到session,忽略大小写 
  req.session = captcha.text.toLowerCase(); 
  console.log(req.session); //0xtg 生成的验证码
  //保存到cookie 方便前端调用验证
  res.cookie('captcha', req.session); 
  res.setHeader('Content-Type', 'image/svg+xml');
  res.write(String(captcha.data));
  res.end();
 },

做到这只是实现了生成验证码的功能,那么要访问呢?

4.编写后台路由

// 获取验证码
router.get('/api/getCaptcha', function(req, res, next) {
 return api.getCaptcha(req, res, next);
})

当前端调用 /api/getCaptcha 这个接口的时候,返回验证码信息,是svg格式

5.前端访问

<img src="/api/getCaptcha" alt="captcha" >

node实现登录图片验证码的示例代码

但是现在我们又有需求了,当点击这个验证码的时候,验证码会刷新

6.实现点击验证码刷新

更改一下刚刚验证码的结果,给他加一个外层a标签,并给他绑定一个点击事件,我这里用了 vue ,所以是 @click ,其他框架同理.

<a href="#" rel="external nofollow" @click="editCaptcha">
  <img src="/api/getCaptcha" alt="" ref="imgYzm">
</a>

点击事件 editCaptcha

editCaptcha () {
  this.$refs.imgYzm.src = '/api/getCaptcha?d='+Math.random()
},

这样就实现了点击验证码刷新的问题

7.前端验证验证码

刚刚我们在后台得到了验证码,但是前端要怎么验证呢?

记得在3-2的时候我们安装了 cookie-parser ,并且在3-3里将生成的session保存在cookie里,这里我们前端就可以通过访问这个cookie拿到验证码的值了。

node实现登录图片验证码的示例代码

为什么要保存在cookie里? 因为后端生成的session我们前端是访问不到的,如果等访问到的话,那还谈什么安全性可言,所以保存一份在cookie里供前端访问。

let captcha = document.cookie.split('=')[1]
  if(this.yzm != captcha){
   return this.$message.warning('验证码错误')
  }

最后的前端输入账号密码验证码做登录验证等等我就不多概述了。具体思想就是这样。

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

Javascript 相关文章推荐
Javascript-Mozilla和IE中的一个函数直接量的问题
Jan 09 Javascript
为jquery.ui.dialog 增加“在当前鼠标位置打开”的功能
Nov 24 Javascript
jquery表单对象属性过滤选择器实例分析
May 18 Javascript
jQuery根据用户电脑是mac还是pc加载对应样式的方法
Jun 26 Javascript
详解Javascript模板引擎mustache.js
Jan 20 Javascript
详解Angular的内置过滤器和自定义过滤器【推荐】
Dec 26 Javascript
JS闭包可被利用的常见场景小结
Apr 09 Javascript
详解基于Wepy开发小程序插件(推荐)
Aug 01 Javascript
基于layui table返回的值的多级嵌套的解决方法
Sep 19 Javascript
JS中比较两个Object数组是否相等方法实例
Nov 11 Javascript
用vue设计一个日历表
Dec 03 Vue.js
JavaScript实现班级抽签小程序
May 19 Javascript
vue项目中api接口管理总结
Apr 20 #Javascript
通过jquery获取上传文件名称、类型和大小的实现代码
Apr 19 #jQuery
js Element Traversal规范中的元素遍历方法
Apr 19 #Javascript
关于vue中的ajax请求和axios包问题
Apr 19 #Javascript
详解vue 数据传递的方法
Apr 19 #Javascript
Vue 去除路径中的#号
Apr 19 #Javascript
详解vue中点击空白处隐藏div的实现(用指令实现)
Apr 19 #Javascript
You might like
虹吸壶是谁发明的?煮出来的咖啡好喝吗
2021/03/04 冲泡冲煮
Drupal 添加模块出现莫名其妙的错误的解决方法(往往出现在模块较多时)
2011/04/18 PHP
php URL跳转代码 减少外链
2011/06/25 PHP
Yii基于CActiveForm的Ajax数据验证用法示例
2016/07/14 PHP
ThinkPHP实现附件上传功能
2017/04/27 PHP
用JavaScript显示随机图像或引用
2009/04/21 Javascript
javascript Prototype 对象扩展
2009/05/15 Javascript
js调用iframe实现打印页面内容的方法
2014/03/04 Javascript
JavaScript中如何通过arguments对象实现对象的重载
2014/05/12 Javascript
javascript相关事件的几个概念
2015/05/21 Javascript
JavaScript对数组进行随机重排的方法
2015/07/22 Javascript
浅谈jquery中的each方法$.each、this.each、$.fn.each
2016/06/23 Javascript
基于Layer+jQuery的自定义弹框
2020/05/26 Javascript
微信公众平台开发教程(五)详解自定义菜单
2016/12/02 Javascript
three.js实现3D影院的原理的代码分析
2017/12/18 Javascript
Element input树型下拉框的实现代码
2018/12/21 Javascript
简述ES6新增关键字let与var的区别
2019/08/23 Javascript
Vue通过getAction的finally来最大程度避免影响主数据呈现问题
2020/04/24 Javascript
Python使用PIL模块生成随机验证码
2017/11/21 Python
centos6.8安装python3.7无法import _ssl的解决方法
2018/09/17 Python
啥是佩奇?使用Python自动绘画小猪佩奇的代码实例
2019/02/20 Python
基于python实现百度翻译功能
2019/05/09 Python
python flask中动态URL规则详解
2019/11/22 Python
Pytorch Tensor 输出为txt和mat格式方式
2020/01/03 Python
解决pyecharts运行后产生的html文件用浏览器打开空白
2020/03/11 Python
Python通过字典映射函数实现switch
2020/11/06 Python
详解matplotlib中pyplot和面向对象两种绘图模式之间的关系
2021/01/22 Python
Python 将代码转换为可执行文件脱离python环境运行(步骤详解)
2021/01/25 Python
性能测试工程师的面试题
2015/02/20 面试题
中西医结合临床医学专业大学生自荐信
2013/09/28 职场文书
餐饮业的创业计划书范文
2013/12/26 职场文书
物业消防安全责任书
2014/07/23 职场文书
生物学专业求职信
2014/07/23 职场文书
“四风”查摆问题自我剖析材料
2014/09/27 职场文书
postgresql无序uuid性能测试及对数据库的影响
2021/06/11 PostgreSQL
nginx lua 操作 mysql
2022/05/15 Servers