前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >nodejs使用redis实现图形验证码功能

nodejs使用redis实现图形验证码功能

原创
作者头像
w候人兮猗
修改2020-06-24 17:10:58
9790
修改2020-06-24 17:10:58
举报

nodejs连接redis模块

redis的使用
  • 安装 redis 模块 npm install redis --savemodule.exports = { redis:{ url:'localhost', port:6379, password:'123456' } }上述配置中,urlredis服务的地址。portredis服务的端口号,这里是默认端口,passwordredis的密码。
  • 进行redis的一些配置
  • 编写redis工具函数

内容太多了,具体看代码及注释吧。

代码语言:txt
复制
const redis = require('redis');
const config = require('./keys').redis

const client = redis.createClient(config.port, config.url); // 实例redis对象

//连接错误处理
client.on("error", err => {
    console.log('redis connect err', err);
});

client.on('connect', () => {
    console.log('redis connect success');
})

//验证redis
client.auth(config.password);

const redisHelper = {};

/**
 * redisHelper setString function
 * @param key
 * @param value
 * @param expire
 */
redisHelper.setString = (key, value, expire) => {
    return new Promise((resolve, reject) => {
        client.set(key, value, function (err, result) {

            if (err) {
                console.log(err);
                reject(err);
            }

            if (!isNaN(expire) && expire > 0) {
                client.expire(key, parseInt(expire));
            }
            resolve(result)
        })
    })
}

/**
 * redisHelper getString function
 * @param key
 */
redisHelper.getString = (key) => {
    return new Promise((resolve, reject) => {
        client.get(key, function (err, result) {
            if (err) {
                console.log(err);
                reject(err)
            }
            resolve(result)
        });
    })
}

module.exports = redisHelper;
  • 使用redis
  1. redisHelper.setString(key, value, expire) 设置redis函数 redisHelper.setString('name','w候人兮猗',60 * 3).then((res)=>{ console.log('设置成功') }).catch((err=>{ console.log('设置失败',err) }))
    image
    image
  2. redisHelper.getString(key) 获取redis函数redisHelper.getString('name') .then(result=>{ return res.json(result) }) .catch(err=>{ console.log(err) })
    image
    image
实现图形验证码
  • 安装svg-captcha模块npm install svg-captcha --save
  • 使用svg-captcha模块const svgCaptcha = require('svg-captcha') const captcha = svgCaptcha.create({ // 翻转颜色 inverse: false, // 字体大小 fontSize: 36, // 噪声线条数 noise: 2, // 宽度 width: 80, // 高度 height: 30, });captcha就是生成的验证码实例 redisHelper.setString(email, captcha.text.toLowerCase(), effectTime).then(result => { if (result) { res.setHeader('Content-Type', 'image/svg+xml'); res.write(String(captcha.data)); res.end(); } }).catch(err => { console.log(err); return res.json({ ...MsgUtil.createWarnMsg('验证码获取失败') }) })
  • 将验证码保存至redis
  • 查看结果 使用postman调我们写好的接口
    image
    image
    查看redis中
    image
    image
总结

简单的写了一下node如果使用redis以及如何生成图形验证码。主要目的是为了在设计登陆注册的时候有图形验证码可以简单防止频繁的刷登陆注册接口。将验证码存于redis中主要是因为redis是一个key-value类型的缓存。用完即删除,十分适用于这样的临时存值的需求

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • nodejs连接redis模块
    • redis的使用
      • 实现图形验证码
        • 总结
        相关产品与服务
        云数据库 Redis
        腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档