一、控制器图形验证
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))