目录结构
基类base.js
controller/admin/base.js
'use strict';
const Controller = require('egg').Controller;
class BaseController extends Controller {
async success(redirectUrl) {
// this.ctx.body = '成功'
await this.ctx.render('admin/public/success',{
redirectUrl:redirectUrl
})
}
async error(redirectUrl) {
// this.ctx.body = '失败'
await this.ctx.render('admin/public/error',{
redirectUrl:redirectUrl
})
}
}
module.exports = BaseController;
新增router
router.js
router.get('/admin/login', controller.admin.login.index);
router.get('/admin/doLogin', controller.admin.login.doLogin);
controller
controller/admin/login.js
其中的this.success('/admin/login')
由base.js
调用,实现登录成功和失败后的跳转
'use strict';
var BaseController = require('./base.js')
class LoginController extends BaseController {
async index() {
await this.ctx.render('admin/login')
}
async doLogin() {
await this.success('/admin/login')
}
}
module.exports = LoginController;
view
view/public/success.html
<%- include ../public/page_header.html %>
<meta http-equiv="refresh" content="3;url=<%=redirectUrl%>">
<div class="container-fluid">
<div class="row">
<div class="col-sm-2">
<%- include ../public/page_aside.html %>
</div>
<div class="col-sm-10">
<div class="alert alert-success">
<h2>操作成功!</h2>
<br />
<p>如果您不做出选择,将在 3秒后跳转到第一个链接地址。</p>
</div>
</div>
</div>
</div>
</body>
</html>
view/public/error.html
<%- include ../public/page_header.html %>
<meta http-equiv="refresh" content="3;url=<%=redirectUrl%>">
<div class="container-fluid">
<div class="row">
<div class="col-sm-2">
<%- include ../public/page_aside.html %>
</div>
<div class="col-sm-10">
<div class="alert alert-danger">
<h2>操作失败!</h2>
<br />
<p>如果您不做出选择,将在 3秒后跳转到第一个链接地址。</p>
</div>
</div>
</div>
</div>
</body>
</html>
效果
成功页面,然后跳转到login
tools.js的server(验证码)
因为admin和index登录都要用到验证码,所以放在server/tools里面
- 一个验证码,对应一张图片
- 请求验证码的时候,把验证码的text当成session存放在服务端
- 登录的时候,看到后台传给前端的验证码图片,输入数字
- 提交给后台,看传过去的验证码和session是否相等
安装验证码包
cnpm install svg-captcha --save
新增router.js
router.get('/admin/verify', controller.admin.base.verify);
controller
controller/base.js
async verify(){
var captcha = await this.service.tools.captcha();
this.ctx.response.type="image/svg+xml";
console.log(captcha.data)
this.ctx.body = captcha.data
}
打印captcha.data得到一个svg
<svg xmlns="http://www.w3.org/2000/svg" width="100" height="40" viewBox="0,0,100,40"><rect width="100%" height="100%" fill="#cc9966"/><path
d="M16 37 C58 2,55 34,85 19" stroke="#87e2e2" fill="none"/><path fill="#494a49" d="M78.82 24.95L78.85 24.98L78.82 24.95Q78.92 25.05 81.95 25.02L81.98 25.05L81.93 25.00Q83.94 24.97 84.89 25.01L84.79 24.91L84.83 24.94Q83.91 22.39 81.73 17.36L81.75 17.37L81.81 17.44Q81.23 18.62 80.29 21.17L80.34 21.22L80.30 21.18Q79.39 23.75 78.88 25.01ZM85.99 27.32L85.99 27.33L85.85 27.19Q83.78 27.12 81.81 27.15L81.84 27.19L81.98 27.33Q79.89 27.28 77.85 27.45L77.89 27.49L77.83 27.42Q76.52 30.54 73.63 34.28L73.68 34.32L73.56 34.20Q71.38 34.88 70.16 35.32L70.09 35.25L70.03 35.19Q74.65 30.19 78.83 18.26L78.75 18.18L78.74 18.17Q79.90 15.16 81.13 12.27L81.23 12.37L81.24 12.38Q81.49 12.35 81.79 12.35L81.80 12.36L82.34 12.26L82.39 12.31Q83.10 13.56 87.41 23.96L87.34 23.88L87.31 23.86Q90.23 30.85 93.80 34.56L93.81 34.57L93.94 34.70Q93.42 34.52 89.96 33.74L90.00 33.79L90.02 33.80Q87.64 30.92 85.87 27.21ZM89.94 34.10L89.87 34.03L90.35 34.07L90.45 34.16Q90.53 34.04 90.80 34.15L90.91 34.25L90.88
34.23Q91.16 34.54 92.80 36.34L92.87 36.42L92.87 36.42Q96.16 37.26 98.30 38.18L98.15 38.02L98.23 38.10Q93.40 34.13 89.83 26.99L89.80 26.95L89.73 26.88Q88.23 23.89 86.94 20.36L87.03 20.45L84.49 13.65L84.53 13.70Q84.37 13.85 84.17 13.85L84.16 13.84L83.65 13.81L83.63 13.78Q83.24 13.12 82.59 11.90L82.59 11.89L82.62 11.92Q82.15 11.93 81.75 11.90L81.78 11.93L81.75 11.90Q81.32 11.85 80.84 11.85L80.96 11.96L80.91 11.91Q79.57
15.34 76.11 24.41L76.22 24.53L76.17 24.47Q73.36 31.55 69.21 35.84L69.28 35.90L69.18 35.80Q70.10 35.43 71.90 34.89L72.00 34.99L71.92 34.91Q71.24 35.69 69.85 37.29L69.80 37.24L69.85 37.29Q71.40 36.73 74.90 36.05L74.87 36.02L74.85 36.01Q77.91 32.13 79.31 29.24L79.35 29.29L79.44 29.37Q80.89 29.17 82.97 29.20L83.09 29.32L82.97 29.20Q85.36 29.18 86.59 29.25L86.58 29.24L86.69 29.35Q87.70 31.35 89.81 33.97ZM83.07 21.00L82.98 20.92L83.05 20.99Q83.85 22.87 84.53 24.74L84.53 24.74L81.57 24.74L81.56 24.73Q82.11 23.48 83.06 21.00Z"/><path fill="#353a35" d="M11.26 24.31L11.16 24.22L11.13 24.19Q7.33 23.96 6.82 26.67L6.90 26.75L6.99 26.84Q6.82 27.79 6.99 28.57L6.87 28.46L6.97 28.55Q6.88 29.14 7.29 30.40L7.27 30.39L7.36 30.48Q8.30 33.28 11.26 33.15L11.31 33.20L11.21 33.10Q13.07 33.23 14.26 31.84L14.34 31.92L14.19 31.77Q15.35 30.51 15.35 28.68L15.33 28.66L15.41 28.73Q15.55 28.23 15.42 27.28L15.27 27.13L15.32 27.19Q15.18 26.30 14.81 25.68L14.91 25.79L14.95 25.83Q13.46 24.30 11.15 24.20ZM15.52 40.74L15.56 40.78L15.48 40.70Q13.78 41.14 6.57 41.48L6.57 41.48L6.74 41.65Q5.05 41.52 3.59 40.77L3.74 40.93L3.62 40.81Q4.34 39.93 5.97 38.33L6.14 38.50L6.15 38.51Q8.26 39.40 10.13 39.23L10.14 39.24L10.15 39.24Q12.65 38.93 13.40 38.69L13.40 38.69L13.41 38.70Q15.46 38.13 15.46 36.53L15.31 36.39L15.45 36.53Q15.34 36.21 15.27 36.00L15.41 36.14L15.33 34.74L15.30 34.71Q15.17 33.90 15.17 33.19L15.22 33.24L15.27 33.29Q14.10 35.34 11.07 35.34L11.01 35.28L10.94 35.21Q7.62 35.36 6.16 33.39L6.12 33.35L6.13 33.35Q5.11 31.97 4.40 28.02L4.31 27.94L4.37 28.00Q4.07 26.61 4.07 25.35L4.08 25.35L4.02 25.29Q4.09 23.77 4.90 22.88L4.86 22.84L4.85 22.84Q6.42 21.65 10.57 21.65L10.54 21.62L12.02 21.71L12.16
21.85Q14.97 22.11 16.16 23.84L16.26 23.94L16.23 23.91Q16.24 23.01 16.61 21.54L16.74 21.67L16.72 21.65Q18.39 21.35 19.95 20.70L19.83 20.57L19.93 20.68Q17.59 26.16 17.59 32.61L17.59 32.61L17.45 32.48Q17.61 35.02 17.95 37.36L17.88 37.29L17.91 37.32Q18.10 37.95 18.04 38.57L17.88 38.41L17.90 38.43Q17.88 39.80 16.79 40.48L16.74 40.43L16.61 40.30Q16.28 40.66 15.54 40.76ZM18.17 43.36L18.24 43.42L18.17 43.36Q19.42 43.35 20.10 42.50L20.11 42.51L20.13 42.53Q20.54 41.78 20.44 41.14L20.41 41.11L20.36 41.06Q20.33 40.56 20.16 39.88L20.06 39.78L20.02 39.73Q19.09 35.24 19.40 30.55L19.32 30.47L19.27 30.42Q19.73 25.71 21.63 21.39L21.50 21.26L19.67 22.15L19.61 22.10Q19.90 21.63 20.10 21.12L20.04 21.06L20.53 20.09L20.43 19.99Q18.37 20.88 16.40 21.26L16.51 21.37L16.48 21.34Q16.17 22.08 16.03 23.00L16.00 22.97L16.09 23.06Q14.05 21.18 10.44 21.18L10.52 21.26L8.93 21.23L9.04 21.35Q6.04 21.24 4.55 22.50L4.49 22.43L4.49 22.44Q3.79 23.44 3.83 25.14L3.77 25.08L3.83 25.15Q3.95 27.43 4.86 31.24L4.68 31.05L4.82 31.20Q5.19 32.86 6.28 34.12L6.19 34.03L6.58 34.42L6.59 34.43L6.59 34.42Q7.60 36.49 9.91 36.96L9.85 36.91L9.99 37.05Q11.16 37.23 12.45 37.26L12.47 37.28L12.47 37.29Q14.07 37.36 15.02 37.02L14.95 36.94L14.93 36.92Q14.52 38.45 12.14 38.75L12.10 38.71L11.95 38.57Q11.03 38.73 10.42 38.73L10.43 38.75L10.24 38.89L10.21 38.87Q7.68 38.85 6.18 38.00L6.14 37.95L4.69 39.57L4.56 39.43Q3.95 40.32 3.20 41.17L3.11 41.08L3.11 41.07Q3.89 41.45 4.78 41.62L4.79 41.64L4.04 42.45L4.18 42.59Q6.48 43.43 11.51 43.43L11.58 43.49L11.68 43.39L11.74 43.46Q14.99 43.48
18.19 43.38ZM12.82 26.25L12.84 26.27L12.92 26.34Q14.11 26.31 14.93 26.69L14.88 26.64L14.78 26.54Q15.09 27.13 15.16 27.74L15.04 27.62L15.02 27.60Q15.03 27.85 15.00 28.66L15.07 28.73L15.01 28.68Q14.94 30.37 13.95 31.53L13.93 31.50L13.94 31.51Q13.06 32.95 11.36 32.91L11.27 32.82L11.24 32.79Q10.05 32.82 9.30 32.45L9.13 32.28L9.30 32.45Q8.92 31.39 8.89 30.47L8.94 30.52L8.90 30.49Q8.85 26.66 12.96 26.39Z"/><path fill="#263a3a" d="M27.25 22.53L27.19 22.47L27.12 22.40Q24.08 22.42 23.10 25.41L23.00 25.32L22.95 25.26Q22.78 26.39 22.68 27.34L22.64 27.30L22.71 27.37Q22.34 29.01 23.22 30.20L23.26 30.23L23.33 30.30Q24.54 31.38 26.75 31.41L26.67 31.33L26.77 31.44Q28.37 31.44 29.63 30.42L29.62 30.41L29.58 30.37Q30.85 29.36 30.85 27.76L30.81 27.72L30.90 27.82Q30.92 27.52 30.85 27.18L30.74 27.07L30.85 27.18Q30.55 22.49 27.15 22.43ZM26.98 33.48L27.03 33.52L27.06 33.56Q23.65 33.75 22.05 31.95L22.16 32.06L22.07 31.97Q21.84 32.86 21.43 34.08L21.49 34.14L21.42 34.07Q19.70 34.76 18.58 35.27L18.60 35.29L18.48 35.17Q20.57 29.99 20.57 24.18L20.62 24.23L20.46 24.07Q20.44 16.64 17.38 9.64L17.52 9.77L17.45 9.70Q19.63 11.00 20.82 11.41L20.67 11.26L20.74 11.33Q22.60 17.23 22.73 22.43L22.70 22.40L22.67 22.37Q24.07 20.10 27.41 20.14L27.44 20.18L27.33 20.06Q30.27 20.14 31.59 21.81L31.59 21.81L31.69 21.90Q33.13 23.75 33.26 26.95L33.37 27.05L33.38 27.06Q33.42 28.09 33.35 29.51L33.33 29.50L33.38 29.54Q33.40 30.89 32.62 31.91L32.55 31.84L32.49 31.78Q31.03 33.41 27.15 33.65ZM31.99 35.84L32.05 35.90L32.01 35.86Q33.29 35.81 34.61 35.20L34.74 35.32L34.58 35.17Q35.70 34.14 35.73 32.41L35.60 32.28L35.71 32.38Q35.61 31.84 35.48 30.79L35.54 30.85L35.62 30.93Q35.49 30.26 35.38 29.44L35.26 29.32L35.38 29.44Q34.70 25.22 33.30 23.38L33.21 23.29L33.30 23.38Q33.31 23.36 32.60 22.57L32.57 22.55L32.56 22.54Q32.20 22.15 31.73 21.43L31.82 21.53L31.89 21.60Q30.33 19.73 27.34 19.76L27.48 19.90L27.37 19.80Q25.53 19.83 24.41 20.37L24.36 20.32L24.51 20.47Q24.08 16.30 23.54 13.45L23.55 13.46L23.54 13.45Q22.94 13.36 21.61 13.02L21.57 12.98L21.58 12.98Q21.53 12.39 21.12 11.10L20.99 10.97L21.02 11.00Q18.83 10.27 16.82 8.87L16.99 9.04L16.97 9.02Q20.33 16.32 20.33 24.17L20.29 24.14L20.37 24.21Q20.30 30.37 18.09 35.91L18.00 35.81L18.13 35.94Q18.72 35.62 19.91 35.11L19.78 34.97L19.92 35.12Q19.74 35.82 19.20 37.18L19.03 37.01L19.06 37.05Q20.93 36.34 23.42 35.86L23.38 35.82L23.75 34.22L23.63 34.10Q25.87 35.80 32.06 35.90ZM28.63 24.52L28.67 24.56L28.69 24.58Q29.48 24.46 29.96 24.80L29.93 24.77L29.97 24.81Q30.28 25.29 30.48 27.09L30.51 27.12L30.44
27.04Q30.62 28.72 29.50 29.89L29.50 29.89L29.52 29.91Q28.40 31.09 26.67 30.99L26.71 31.03L26.67 30.99Q25.97 31.25 24.65 30.81L24.53 30.69L24.63 30.79Q24.33 30.25 24.33 29.77L24.38 29.83L24.36 29.81Q24.28 26.97 25.67 25.54L25.71 25.58L25.70 25.60L25.69 25.59Q27.10 24.49 28.66 24.56Z"/><path fill="#332f40" d="M65.05 30.64L65.07 30.65L65.13 30.71Q66.09 31.47 67.35 31.33L67.27 31.25L67.29 31.28Q70.00 31.54 70.58 28.55L70.60 28.57L70.60 28.57Q71.03 25.64 71.03 22.61L71.15 22.73L71.02 20.29L70.98 20.25Q71.07 19.22 70.77 18.10L70.69 18.02L70.79 18.12Q69.63 20.12 67.86 24.37L67.97 24.48L67.98 24.49Q66.05 28.58 64.96 30.55ZM69.64 16.02L69.62 16.00L69.52 15.90Q68.62 15.30 67.43 15.30L67.26 15.14L67.26 15.13Q65.93 14.99 64.94 15.81L65.10 15.96L65.04 15.90Q64.00 16.66 63.83 17.99L63.88 18.04L63.91 18.08Q63.54 19.23 63.50 20.56L63.59 20.64L63.60 20.65Q63.53 20.58 63.53 23.13L63.62 23.23L63.42 23.03Q63.47 25.18 63.88 28.41L63.95 28.48L63.98 28.51Q65.72 24.31 69.63 16.01ZM70.93 32.71L70.90 32.68L71.03 32.81Q69.41 33.56 67.33 33.56L67.25 33.48L65.74 33.43L65.79 33.48Q62.88 33.46 61.86 31.94L61.99 32.06L61.94 32.01Q61.29 30.14 61.23 27.52L61.17 27.46L61.17 27.47Q61.06 25.83 61.00 22.74L61.00 22.75L61.13 22.88Q60.92 21.61 60.79 18.89L60.87 18.98L60.89 19.00Q60.80 16.94 61.07 15.17L61.13 15.23L61.12 15.21Q61.50 12.54 65.38 12.34L65.38 12.34L65.35 12.30Q66.04 12.29 67.23 12.32L67.30 12.38L67.21 12.30Q72.32 12.48 73.27 15.57L73.25 15.55L73.37 15.67Q73.75 17.20 73.71 18.87L73.74 18.89L73.74 18.90Q73.79 23.47 73.72 24.56L73.60 24.43L73.59 24.43Q73.46 27.86 73.19 29.02L73.25 29.08L73.19 29.01Q72.68 31.88 70.98 32.76ZM75.36 32.51L75.37 32.52L75.31 32.46Q75.53 30.00 75.50 28.41L75.62 28.52L75.48 24.34L75.41 24.27Q75.38 21.63 74.91 16.70L74.97 16.77L74.97 16.77Q74.48 15.12 73.33 14.44L73.35 14.46L73.20 14.31Q71.95 12.18 67.33 12.04L67.21 11.92L67.32 12.03Q66.45 11.91 65.26 11.95L65.21 11.89L65.38 12.07Q61.34 12.14 60.90 14.93L60.82 14.84L60.84 14.87Q60.38 16.82 60.48 18.69L60.63 18.84L60.62 18.82Q60.92 22.73 60.89 25.72L60.86 25.69L60.87 25.70Q60.73 28.90 60.83 29.81L60.90 29.89L60.83 29.82Q61.31 32.71 62.67 33.42L62.53 33.28L62.57 33.32Q63.97 35.37 67.54 35.61L67.40 35.47L67.58 35.65Q70.68 35.75 71.26 35.72L71.22 35.68L71.31 35.78Q73.84 35.62 74.86 34.19L74.79 34.12L74.78 34.11Q75.21 33.49 75.28 32.44ZM67.75 31.06L67.77 31.07L67.68 30.99Q68.38 29.78 69.33 27.37L69.33 27.37L70.85 23.58L70.84 23.58Q70.82 25.05 70.48 28.04L70.45 28.01L70.36 27.92Q69.88 30.61 67.74 31.05ZM65.90 19.99L65.89 19.98L65.98 20.08Q66.23 18.32 66.84 17.81L66.97 17.94L67.00 17.96Q67.40 17.59 68.56 17.42L68.49 17.35L68.55 17.41Q67.02 20.68 65.36 24.82L65.38 24.85L65.26 24.72Q65.30 22.35 65.91 20.01Z"/><path fill="#2a2628" d="M43.12 23.94L43.29 24.11L43.11 23.93Q42.13 23.32 41.55 23.35L41.64 23.45L41.49 23.29Q40.27 23.37 39.33 24.27L39.38 24.32L39.45 24.38Q38.53 25.30 38.63 26.52L38.66 26.56L38.61 26.50Q38.80 30.29 38.02 34.34L38.11 34.43L38.13 34.45Q36.01 34.71 35.02 35.18L35.02 35.18L35.08 35.25Q36.45 31.55 36.24 27.57L36.18 27.50L36.14 27.47Q35.97 23.49 34.44 19.85L34.53 19.94L34.53 19.94Q35.49 20.49 37.53 21.07L37.45 20.99L38.03 23.48L38.12 23.57Q38.76 21.00 42.56 21.00L42.42 20.86L42.57 21.01Q42.72 20.75 42.99 20.75L43.14 20.90L43.13 20.89Q44.23 20.84 45.36 21.45L45.41 21.51L45.30 21.40Q44.19 22.66 43.17 23.99ZM44.69 25.85L44.79 25.81L44.80 25.83Q45.55 24.74 47.04 22.56L47.00 22.52L47.00 22.52Q46.53 22.15 45.17 21.91L45.19 21.93L45.27 22.01Q45.52 21.68 45.93 21.14L45.84 21.06L45.89 21.10Q44.32 20.42 42.59 20.59L42.48 20.48L42.58 20.58Q40.82 20.72 40.17 20.96L40.14 20.93L40.05 20.84Q38.95 21.37 38.24 22.36L38.11 22.23L38.07 21.61L37.84 20.80L37.90 20.86Q35.76 20.49 34.00 19.30L33.90 19.21L33.91 19.22Q35.91 23.23 36.12 27.58L36.07 27.53L35.96 27.42Q36.24 31.88 34.68 35.93L34.66 35.91L34.68 35.93Q35.55 35.41 36.33 35.13L36.41 35.21L36.32 35.12Q36.13 36.16 35.69 37.11L35.68 37.10L35.75 37.17Q38.30 36.43
40.21 36.32L40.22 36.34L40.40 32.30L40.30 32.20Q40.46 30.26 40.46 28.25L40.41 28.20L40.34 28.13Q40.44 27.17 41.26 26.31L41.16 26.21L41.18 26.24Q41.99 25.36 43.01 25.29L43.02 25.31L43.07 25.35Q43.56 25.17 44.21 25.78L44.24 25.81L44.72 25.88ZM40.21 24.22L40.20 24.15L40.16 24.21L40.10 24.11Z"/><path fill="#54534e" d="M47.47 11.84L47.39 11.76L47.45 11.83Q49.22 16.24 49.73 20.86L49.59 20.73L49.77 20.91Q52.92 17.06 58.19 12.74L58.18 12.73L58.24 12.79Q61.04 12.46 63.39 11.75L63.46 11.83L57.66 16.90L57.55 16.79Q54.60 19.51 52.05 22.06L52.07 22.09L51.98 22.00Q59.12 30.19 63.64 34.41L63.56 34.32L63.61 34.37Q60.80 33.50 58.72 33.36L58.75 33.39L58.75 33.39Q53.56 28.54 49.72 23.34L49.80 23.42L49.74 23.36Q49.89 29.32 48.23 34.08L48.27 34.13L48.29 34.15Q48.05 34.15 47.61 34.32L47.53 34.23L47.60 34.47L47.46 34.33Q47.29 34.37 45.02 35.19L45.16 35.33L45.06 35.23Q47.73 29.40 47.42 22.74L47.45 22.77L47.37 22.69Q47.06 16.13 43.90 10.31L44.06 10.47L44.48 10.65L44.83 10.90L44.79 10.83L44.85 10.89Q45.46 11.19 47.43 11.80ZM47.73 11.59L47.61 11.47L47.74 11.61Q45.75 11.14 43.40 9.78L43.36 9.73L43.25 9.63Q47.21 16.27 47.21 24.26L47.10 24.15L47.13 24.18Q47.17 30.48 44.52 35.88L44.44 35.80L46.39 35.17L46.32 35.10Q45.95 35.98 45.34 37.14L45.34 37.14L45.28 37.09Q47.46 36.54 49.19 36.17L49.17 36.14L49.12 35.90L49.08 35.85Q49.34 35.84 49.85 35.70L50.01 35.87L49.94 35.80Q51.39 30.48 51.49 26.20L51.40 26.11L51.56 26.27Q53.29 28.37 54.92 30.03L55.03 30.14L55.03 30.15Q55.97 31.02 58.65 33.67L58.74 33.75L58.82 33.84L58.84 33.85Q59.58 34.42 61.24 35.85L61.25 35.86L61.40 36.01Q64.73 36.52 67.83 38.05L67.94 38.16L67.88 38.10Q59.65 30.52 54.08 23.89L54.00 23.82L53.96 23.77Q57.87 19.94 65.69 12.26L65.83 12.40L65.80 12.36Q63.49 13.35 61.69 13.69L61.60 13.60L61.73 13.73Q62.85 12.88 64.92 11.08L64.92 11.07L64.93 11.09Q61.17 12.26 58.18 12.43L58.11 12.36L58.22 12.46Q55.58 14.41 51.23 18.59L51.24 18.61L51.21 18.57Q50.83 16.22 50.32 13.95L50.28 13.90L50.45 14.07Q49.29 13.83 48.40 13.53L48.48 13.60L48.42 13.54Q48.24 12.88 47.73 11.59Z"/></svg>
service/tools.js
const svgCaptcha = require('svg-captcha');
async captcha() {
var capctcha = svgCaptcha.create({})
this.ctx.session.code = capctcha.text;
console.log("验证码"+this.ctx.session.code)
return capctcha
}
view
login.html
访问/admin/verify
<img id="verify_img" src="/admin/verify" title="看不清?点击刷新" onclick="javascript:this.src='/admin/verify?mt='+Math.random()">
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。