日期: 2021/07/29 天气:晴

    1. const express = require('express')
    2. const app = express()
    3. const session = require('express-session')
    4. const svgCaptcha = require('svg-captcha')
    5. // 定义生成验证码函数
    6. function createCode () {
    7. // 配置背景图片颜色集合
    8. const colorMap = ['#eeeeee','#edfedf','#eeddff','skyblue','orange','#c8c8c8']
    9. //随机颜色
    10. const randomColor = colorMap[Math.floor(Math.random() * colorMap.length)]
    11. const options ={
    12. size: 6, // 验证码长度
    13. ignoreChars: '0oO1lI', // 排除字符
    14. noise: 2, // 干扰条数
    15. width: 160,
    16. height: 50,
    17. fontSize: 50,
    18. color: true,
    19. background: randomColor
    20. }
    21. const captcha = svgCaptcha.create(options)
    22. return captcha
    23. }
    24. app.use(session({
    25. secret:'Keyboard cat',
    26. resave: false,
    27. saveUninitialized: true,
    28. cookie: {
    29. secure: false,
    30. maxAge: 30000
    31. },
    32. rolling: true
    33. }))
    34. // 生成
    35. app.get('/getCaptcha', (req, res) => {
    36. const captchaObj = createCode();
    37. req.session.captcha = captchaObj.text.toLowerCase();
    38. res.setHeader('Content-Type', 'text/html');
    39. res.send(captchaObj.data)
    40. })
    41. //验证
    42. app.get('/valid', (req, res) => {
    43. const codeSession = req.session.captcha.toLowerCase()
    44. const code = req.query.code.toLowerCase()
    45. if (codeSession !== code) {
    46. return res.send({ code : 500, success: false })
    47. }
    48. return res.send({ code : 200, success: true })
    49. })
    50. app.listen(3000, ()=> {
    51. console.log('http://localhost:3000')
    52. })