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 相关文章推荐
动态刷新 dorado树的js代码
Jun 12 Javascript
JavaScript 关键字屏蔽实现函数
Aug 02 Javascript
javascript 寻找错误方法整理
Jun 15 Javascript
javascript实现全角与半角字符的转换
Jan 07 Javascript
javascript十六进制及二进制转化的方法
May 06 Javascript
JS模拟的Map类实现方法
Jun 17 Javascript
基于JS实现回到页面顶部的五种写法(从实现到增强)
Sep 03 Javascript
Angularjs中的页面访问权限怎么设置
Nov 11 Javascript
JavaScript中this的用法实例分析
Dec 19 Javascript
JavaScript计时器用法分析【setTimeout和clearTimeout】
Jan 18 Javascript
原生JS实现图片网格式渐显、渐隐效果
Jun 05 Javascript
Mobile Web开发基础之四--处理手机设备的横竖屏问题
Aug 11 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
Mysql中分页查询的两个解决方法比较
2013/05/02 PHP
XAMPP安装与使用方法详细解析
2013/11/27 PHP
PHP带节点操作的无限分类实现方法详解
2016/11/09 PHP
PHP判断访客是否手机端(移动端浏览器)访问的方法总结【4种方法】
2019/03/27 PHP
js 多种变量定义(对象直接量,数组直接量和函数直接量)
2010/05/24 Javascript
浅析jquery的作用与优势
2013/12/02 Javascript
理运用命名空间让js不产生冲突避免全局变量的泛滥
2014/06/15 Javascript
node.js中的buffer.write方法使用说明
2014/12/10 Javascript
Bootstrap每天必学之媒体对象
2015/11/30 Javascript
jquery拖拽效果完整实例(附demo源码下载)
2016/01/14 Javascript
javascript中利用柯里化函数实现bind方法
2016/04/29 Javascript
jQuery通过deferred对象管理ajax异步
2016/05/20 Javascript
JavaScript 判断对象中是否有某属性的常用方法
2018/06/14 Javascript
微信小程序开发实现消息推送
2020/11/18 Javascript
详解vue 动态加载并注册组件且通过 render动态创建该组件
2019/05/30 Javascript
Vuex的API文档说明详解
2020/02/05 Javascript
Vue-cli3多页面配置详解
2020/03/22 Javascript
[40:10]2015国际邀请赛全明星表演赛
2015/08/07 DOTA
python继承和抽象类的实现方法
2015/01/14 Python
非递归的输出1-N的全排列实例(推荐)
2017/04/11 Python
Python实现的字典值比较功能示例
2018/01/08 Python
用python做游戏的细节详解
2019/06/25 Python
python创建学生管理系统
2019/11/22 Python
基于pycharm 项目和项目文件命名规则的介绍
2021/01/15 Python
python中添加模块导入路径的方法
2021/02/03 Python
美国摄影爱好者购物网站:Focus Camera
2016/10/21 全球购物
沙龙级头发造型工具:FOXYBAE
2018/07/01 全球购物
Vrbo英国:预订度假屋
2020/08/19 全球购物
abstract class和interface有什么区别?
2012/01/03 面试题
天游软件面试
2013/11/23 面试题
挂职自我鉴定
2014/02/26 职场文书
团队口号大全
2014/06/06 职场文书
代办委托书怎么写
2014/08/01 职场文书
我的中国梦演讲稿初中篇
2014/08/19 职场文书
学生会竞选演讲稿怎么写
2014/08/26 职场文书
经典法律座右铭(50句)
2019/08/15 职场文书