koa+ts+mysql后台开发——(八)图形验证码,登录使用图形验证码校验,使用session记录验证码

一、控制器图形验证

1、 引包

npm i svg-captcha

2、代码

tips:支持图形验证码和算术验证码

import { Context } from 'koa'
import svgCaptcha from 'svg-captcha'
// import response from '../../utils/response'


class CaptchaController {
  getCaptcha(ctx: Context) {
    const uuid = ctx.params['uuid'] as number
    console.log('uuid:', uuid)
    //  若创建算数式验证码,将create改为createMathExpr
    const newCaptcha = svgCaptcha.create({
      size: 5, //验证码长度
      fontSize: 45, //验证码字号
      noise: Math.floor(Math.random() * (5 - 1 + 1)) + 1, //干扰线条数目_随机 1-5 条
      width: 120, //宽度
      height: 40, //高度
      color: true, //验证码字符是否有颜色,默认是没有,但是如果设置了背景颜色,那么默认就是有字符颜色
      background: '#ccc' //背景色
    })
    // @ts-ignore
    ctx.session.captcha = String(newCaptcha.text) // 设置 session 验证码文本
    // response.success(ctx, newCaptcha.data)
    ctx.body = newCaptcha.data
  }
}

export default new CaptchaController

二、配置session的中间件

1、引包

npm i koa-session -S

2、配置

官方文档:https://npmmirror.com/package/koa-session
目录 /app/index.ts

//配置session的中间件
app.keys = ['youKeys'];
const CONFIG_koaSession = {
  key: 'koa:sess', /** 默认 */
  maxAge: 5 * 60 * 1000,  /*  cookie的过期时间        【需要修改】  */
  overwrite: true, /** (boolean) can overwrite or not (default true)    没有效果,默认 */
  httpOnly: true, /**  true表示只有服务器端可以获取cookie */
  signed: true, /** 默认 签名 */
  rolling: true, /** 在每次请求时强行设置 cookie,这将重置 cookie 过期时间(默认:false) 【需要修改】 */
  renew: false, /** (boolean) renew session when session is nearly expired      【需要修改】*/
};

再通过 app.use注册中间件

app.use(koaSession(CONFIG_koaSession, app))
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值