Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >nodejs使用redis模块并实现图形验证码功能

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

作者头像
w候人兮猗
发布于 2020-07-01 09:11:14
发布于 2020-07-01 09:11:14
1.3K00
代码可运行
举报
运行总次数:0
代码可运行

Contents

nodejs连接redis模块

redis的使用
  • 安装 redis 模块
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 npm install redis --save
  • 进行redis的一些配置
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
module.exports = {
    redis:{
        url:'localhost',
        port:6379,
        password:'123456'
    }
}

上述配置中,urlredis服务的地址。portredis服务的端口号,这里是默认端口,passwordredis的密码。

  • 编写redis工具函数

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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函数
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  redisHelper.setString('name','w候人兮猗',60 * 3).then((res)=>{
                console.log('设置成功')
            }).catch((err=>{
                console.log('设置失败',err)
            }))
  1. redisHelper.getString(key) 获取redis函数
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
redisHelper.getString('name')
               .then(result=>{
                   return res.json(result)
               })
               .catch(err=>{
                   console.log(err)
               })
实现图形验证码
  • 安装svg-captcha模块
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
npm install svg-captcha --save
  • 使用svg-captcha模块
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const svgCaptcha = require('svg-captcha')

const captcha = svgCaptcha.create({
                // 翻转颜色
                inverse: false,
                // 字体大小
                fontSize: 36,
                // 噪声线条数
                noise: 2,
                // 宽度
                width: 80,
                // 高度
                height: 30,
            });

captcha就是生成的验证码实例 – 将验证码保存至redis

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 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('验证码获取失败')
                })
            })
  • 查看结果 使用postman调我们写好的接口

查看redis中

总结

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年2月19日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Node实现图形验证码
使用 svg-captcha 这个包并结合后端实现图形验证码功能。 项目地址:https://github.com/Ewall1106/mall 基本使用 在我们项目中安装 svg-captcha 包。 $ npm install svg-captcha --save 官方文档中的基本使用示例: const svgCaptcha = require('svg-captcha'); const captcha = svgCaptcha.create(); console.log(captcha);
Ewall
2020/11/12
1.6K0
nodejs实现图形验证码
nodejs生成图形验证码可以自己写一个,我感觉比较麻烦,因为有现成的……下面我来介绍一下这个现成的验证码生成模块:svg-captcha
OECOM
2020/07/02
3.2K0
Nest.js 实战 (七):如何生成 SVG 图形验证码
在客户端登录的时候,我们就能根据传过来的验证码与 Session 中的信息判断是否正确:
白雾茫茫丶
2024/08/06
3070
Nest.js 实战 (七):如何生成 SVG 图形验证码
浅谈 前端验证码那些事
在实际项目的开发中,验证码的出现的频率相当高,它能实现人机甄别访问、减轻服务器负担的作用。常见的验证码为以下几类:
万少
2025/02/10
1640
浅谈 前端验证码那些事
云开发系列(一):实现验证码登录
终端作为所有用户的真正使用设备,终端开发者也是离用户最近的开发人员,它肩负着将后方提供的一个又一个独立服务整合为体验良好的产品的使命。面对不同的场景,所挑选的后方服务不同,实现方法也不同。
楚歌
2020/11/22
3.7K1
使用腾讯云TCB云函数实现生成随机验证码功能
最近在玩云函数,发现官方文档上说了 http 访问服务时可以使用集成响应返回二进制文件。
薛定喵君
2020/11/09
1.8K0
使用云函数构建短信验证码服务的案例
通过手机短信发送验证码,是最普遍、最安全验证用户真实身份的方式。目前,短信验证码广泛应用于用户注册、密码找回、登录保护、身份认证、随机密码、交易确认等应用场景。
haimingli
2020/12/29
3.9K0
Koa结合Svg-captcha实现用户验证码登录
在开发用户登录系统时,经常要用验证码验证登录是否为人为的操作,以防止有人用密码字典暴力破解,svg-captcha这个模块就是专门用来干这个的,下面给大家介绍一下它的使用方法。
越陌度阡
2020/11/26
1.2K0
原生 JavaScript + NodeJS(Express 框架) 做一个简陋的登录注册项目
配置在 config/default.js ,当然可以在具体文件配置,但是这儿方便一点
Rikka
2022/01/20
9290
nodejs集成redis
Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
OECOM
2020/07/01
9500
node.js+vue.js搭建程序设计类课程教学辅助系统
  毕业才刚刚两个多月而已,现在想想大学生活是那么的遥不可及,感觉已经过了好久好久,社会了两个月才明白学校的好啊。。。额,扯远了,自从毕业开始就想找个时间写下毕设的记录总结,结果找了好久好久到今天才开始动笔。
用户2038589
2018/10/10
2.5K11
【serverless实战】利用腾讯云·云开发实现短信验证码
最近支持了云开发的自定义短信验证码登录功能。第一次体会到利用云开发自身能力,开箱即用的快感。所有的精力集中在业务逻辑和数据库设计上,不用花费过多的精力浪费在运维上。
心谭博客
2020/05/06
3.5K0
VueblogServer项目短信验证码登录功能前端实现
上次我在本人的公众号上发了一篇后端Spring Security认证框架下实现手机短信验证码登录功能的文章手把手带你在集成SpringSecurity的SpringBoot应用中添加短信验证码登录认证功能,但是用户不可能通过调用接口去认证,只会是在前端页面通过点击按钮来登录认证,这就涉及前端功能的实现及与后端接口的联调了。
用户3587585
2022/04/14
1.6K0
VueblogServer项目短信验证码登录功能前端实现
nodejs使用redis发布订阅
一般来说,发布与订阅(又称为pub/sub)的特点是订阅者(listener)负责订阅频道(channel),发送者(publisher)负责向频道发送二进制字符串消息(binary string message)。每当有消息被发送至给定频道时,频道的所有订阅者都会接收到消息,我们也可以吧频道看作是电台,其中订阅者可以同时收听多个电台,而发送者则可以在任何电台发送消息。
OECOM
2020/07/01
2.6K0
springbooot使用google验证码
由于需要做一个前后端分离的项目,想着使用google验证码,由于年龄大了,这些知识啊,用完就忘,在这里记录一下。
魚迹
2023/05/06
4480
springbooot使用google验证码
常用验证码之滑动验证码|图形验证码
这里是常用验证码的第三篇——滑动/图形验证码。在前两篇已经实现了随机验证码和算术验证码,感兴趣的可以去看一下~
流眸
2020/07/06
22.2K1
一文搞懂Go整合captcha实现验证码功能
最近在使用Go语言搞一个用户登录&注册的功能,说到登录&注册相关,我们油然会产生一种增加验证码的想法,因此着手实现,后来在GitHub上找到了这个名叫captcha的插件,于是就利用文档进行了初步的学习,并融入到自己的项目中,整个过程下来感觉这个插件的设计非常巧妙,所以就想写一篇文章分享一下,通过本篇文章,你会学到:
闫同学
2024/02/07
6460
springboot整合redis发送手机验证码注册登录
短信验证码是通过发送验证码到手机的一种有效的验证码系统。主要用于验证用户手机的合法性及敏感操作的身份验证。常见的使用场景有:登录注册、信息修改、异常登录、找回密码等操作。 用户注册发送验证码,然后核实对比用户注册成功采用redis方式将手机号码+key放入redis缓存中设置验证码超时时间,比对用户名和验证码采用数据库存储方式,注册时拿取redis中验证码进行判读验证码是否过期是否匹配。
崔笑颜
2020/06/08
7.5K0
redis入门
Redis是一个内存高速缓存数据库,redis全称 Remote Dictionary Server(远程数据服务) Redis是一个key-value存储系统,它支持很多数据类型:string、list、set、zset、hash Redis以内存作为存储介质,读写数据效率高,远超过数据库。 Redis也支持持久化存储,即将数据定时存储备份到硬盘,当遭遇停电或者宕机的情况下数据不至于丢失。
epoos
2022/06/06
3650
Java图形验证码支持gif、中文、算术等
图形验证码是最经典,也是最常用的验证方式。今天介绍一个非常不错的类库:Java图形验证码,支持gif、中文、算术等类型,可用于Java Web、JavaSE等项目。
BUG弄潮儿
2020/10/19
1K0
相关推荐
Node实现图形验证码
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验