2019-07-19node,egg如何使用svg-captcha生成验证码

使用验证码可以防止暴力破解,和重复操作等好处,这里直接说如何使用
image.png

#安装
npm install --save svg-captcha

#router部分:

module.exports = app => {
  const { router, controller } = app;
  router.get('/api/verify', app.controller.base.verify); // 验证码
}

#生成,Controller 部分:

const Controller = require('egg').Controller;
class BaseController extends Controller {
async verify() {
    const { ctx } = this;
    let captcha = await this.service.tools.captcha(); // 服务里面的方法
    ctx.response.type = 'image/svg+xml';  // 知道你个返回的类型
    ctx.body = captcha.data; // 返回一张图片
  }
}

module.exports = BaseController;

#Service 部分:

const Service = require('egg').Service;
const svgCaptcha = require('svg-captcha');

class ToolsService extends Service {
  // 产生验证码
  async captcha() {
    const captcha = svgCaptcha.create({
      size: 4,
      fontSize: 50,
      width: 100,
      height: 40,
      bacground: '#cc9966'
    });
    this.ctx.session.code = captcha.text;
    return captcha;
  }
}

module.exports = ToolsService;

postMan可以请求到该方法

#取得session中的验证码,controller中直接试了一下

    // 对比验证码
    async verify_code() {
        console.log("进入了测试")
        const { ctx, app } = this;
        let headersCC = ctx.session.code;//获得session中的验证码
        console.log(headersCC, "查看token的内容");
        ctx.body = headersCC;
    }

#可以使用

#:PS :你也可以把登录,注册,分开存session,可以由前端传一个"type"字段,然后后端监听"type"的值,分发不同的session

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值