使用 egg + 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;
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容