zoukankan      html  css  js  c++  java
  • 登陆 数据库查找 以及redis校验验证码

    ```
    //用于生成验证ma
    const svgCaptcha = require("svg-captcha") 
    
    //mysql  用于在数据库中查找前端输入的用户名和密码
    const mysql = require('mysql');
    
    const connection = mysql.createConnection({
      host: 'localhost',
      user: 'root',
      password: '12345678',
      database: 'sys'
    });
    
    connection.connect();
    
    //redis数据库用于存储随机生成的验证码
    //便于及时更新
    
    const client = redis.createClient();
    
    //redis 如果没有启动redis,会报错
    //redis 启动命令 redis-server
    //新建terminal 输入redis-cli
    
    client.on("error", function (err) {
      console.log("Trror" + err);
    })
    
    //生成token  方便redis存储和替换
    function getID(length) {
      return Number(Math.random().toString().substr(3, length) + Date.now()).toString(36);
    }
    
    
      //验证码 
     app.get("/cap", (req, res) => {
       const cap = svgCaptcha.create();
       //cap=>{data:...,text:jsoa}
       //text:随机生成的四位验证码
       //data:传递给前端的验证码的图片
       
       
       let text = cap.text;
       res.type("svg");
       
       //生成一个ID redis保存 并传递给前端
       let captchaId = getID(10)
       client.set(captchaId, text)
       res.send({
         cap,
         captchaId
       })
       return
     })
    
      //前端引用图片
     //  <span dangerouslySetInnerHTML={{ __html: captcha }} onClick={() => this.getcaptcha()}></span>
     
     
     
     //登陆      
    app.post("/getlogin", async (req, res) => {
       let { username, password, verification, captchaId } = req.body;
            let redisCaptcha = await new Promise((resolve) => {
              client.get(captchaId, function (err, res) {
                return resolve(res)
              })
            })
    
            if (verification === redisCaptcha) {
            } else {
              res.send({
                code: 0,
                message: "验证码错误或过期"
              })
              return
            }
    
         //数据库中查找数据
          connection.query(`SELECT * FROM table where username='${username}' &&passwrd='${password}'`, function (error, results, fields) {
              if (error) throw error;
              if (results[0]) {
                res.send({ code: 1, message: "登陆成功" })
              } else {
                res.send({ code: 0, message: "用户名或密码错误" })
                return
              }
            });
    
          })
    ```
  • 相关阅读:
    文件系统类型
    Linux VFS分析(二)
    VFS(Virtual File System)
    shell语言
    linux VFS 之一 :虚拟文件系统的面向对象设计思想
    分层利器 facade
    微内核与面向组件
    从操作系统内核看设计模式--linux内核的facade模式
    软件架构模式
    联系的度量
  • 原文地址:https://www.cnblogs.com/p-123/p/11456357.html
Copyright © 2011-2022 走看看