18910140161

egg.js使用session实现验证码验证

顺晟科技

2021-06-16 10:39:21

445

实施思路:

服务器获取验证码和验证码图片,将图片返回给客户端,将验证码保存到服务器的会话中,客户端填写信息,提交用户输入的验证码,服务器收到后与会话中保存的验证码进行比较,相同则通过,不同则返回错误,并可以为会话设置一个到期时间。

在这里写个图片描述

通过前面介绍的插件获取验证码

const SVgcaptcha=require(' SVG-captcha ');

//获取图片验证码

module.exports.getcode=(ctx)={

常量选项={//参数

宽度: 100,

height: 40,//验证码高度

fontSize: 50,//验证码文字大小

color: true,

噪声: 2,

}

const Captcha=SVgcaptcha . CreateMathexpr(选项);//生成验证码

Const {type,t }=ctx.query//从客户端接收数据。如果type为1,则是登录页面应用的验证码,Type为2,则是注册页面应用的验证码

//登录验证码

if (type==='1') {

Captcha.text//将验证码保存到会话中

} else {

//注册验证码

CTX . session . register _ code=Captcha . text

}

//设置会话到期时间

ctx.session.maxAge=1000 * 60 * 10

Ctx.body={//将结果返回给客户端

status: 0,

消息: '成功',

data: Captcha.data

}

};

//图片验证码验证

module . exports . verify _ code=(CTX)={

Const {type,code }=ctx.query//获取客户端发送的类型和验证码

Const {login _ code,register _ code }=ctx.session//get会话保存的验证码

让result _ success={status: 0,message : ' success ' }//定义返回结果

让result _ error={status: 1,message: '验证码错误' }

//登录验证码验证

If (type==='1') {//验证并返回结果

ctx.body=code===login_code?结果_成功:结果_错误

} else {

//注册验证码验证

ctx.body=code===register_code?结果_成功:结果_错误

}

}

我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航