首页 > 上网技巧 > 电脑小技巧 > egg.js使用session实现验证码验证

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

时间:2020-03-30 16:08 作者:QQ地带 我要评论

实现思路:
服务端获取验证码和验证码图片,把图片返回给客户端,把验证码保存到服务端session,客户端填写信息完成,提交用户输入的验证码,服务端接收之后与保存到session中的验证码进行比较,一样则通过,不一样则返回错误,可以给session设置过期时间。
 
这里写图片描述
 
通过前面介绍过的插件来获取验证码
const svgCaptcha = require('svg-captcha');
// 获取图片验证码
module.exports.getcode = (ctx) => {
    const options = {// 参数
        width: 100,
        height: 40, // height of captcha
        fontSize: 50, // captcha text size
        color: true,
        noise: 2,
    }
    const Captcha = svgCaptcha.createMathExpr(options);//生成验证码
    const {type, t} = ctx.query//接收客户端的数据,如果type爲1则是登录页申请的验证码,type爲2则是注册页申请的验证码
    // 登陆验证码
    if (type === '1') {
        ctx.session.login_code = Captcha.text//把验证码保存到session
    } else {
        // 注册验证码
        ctx.session.register_code = Captcha.text
    }
    // 设置session过期时间
    ctx.session.maxAge = 1000 * 60 * 10
    ctx.body = {//返回结果给客户端
        status: 0,
        message: 'success',
        data: Captcha.data
    }
};
 
//图片验证码验证
module.exports.verify_code = (ctx) => {
    const {type, code} = ctx.query// 获取客户端发送的类型和验证码
    const {login_code, register_code} = ctx.session // 获取session保存的验证码
    let result_success = {status: 0, message: 'success'}// 定义返回结果
    let result_error = {status: 1, message: '验证码错误'}
    // 登陆验证码验证
    if (type === '1') {//进行验证并返回结果
        ctx.body = code === login_code ? result_success : result_error
    } else {
        // 注册验证码验证
        ctx.body = code === register_code ? result_success : result_error
    }
}

标签: Egg.js
顶一下
(0)
0%
踩一下
(0)
0%

Google提供的广告