登陆 数据库查找 以及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
          }
        });

      })
```

原文地址:https://www.cnblogs.com/p-123/p/11456357.html

时间: 2024-07-31 04:00:16

登陆 数据库查找 以及redis校验验证码的相关文章

springboot security+redis+jwt+验证码 登录验证

概述 基于jwt的token认证方案 验证码 框架的搭建,可以自己根据网上搭建,或者看我博客springboot相关的博客,这边就不做介绍了.验证码生成可以利用Java第三方组件,引入 <dependency> <groupId>com.github.penggle</groupId> <artifactId>kaptcha</artifactId> <version>2.3.2</version> </depend

spring boot项目之登陆缓存session至redis和cookies

一.将获取的openId(详细步骤见卖家扫码登陆获取openId)作为参数传入到SellerUserController中的login登陆方法. 注:此处设置token,是为了取出时先从cookie中拿出token,再回redis校验 二.将传入的openId去和数据库中的数据进行匹配 三.先在application.yml中设置redis配置,然后再将token设置进redis(token作为value设置进cookie写进response,又作为key设置进redis,相应的value为op

在JSP中动态生成随机验证码,登录时后台校验验证码,以及如何避免同一个验证码被重复提交爆破密码

只需几步就可以生成动态随机的验证码,最终效果如下图: 一 前台显示页面login.jsp 其中验证码显示的是一张图片,链接指向的是生成验证码的servlet,同时点击图片后触发changeImg()这个js函数,使其动态生成一个新的验证码,这个函数中的参数t=Math.random()并不会参与验证码的生成,它的作用仅仅只是表示每次提交的并不是同一个请求,需要单独处理,完整的login.jsp代码如下: <%@ page language="java" contentType=&

利用ajax异步校验验证码(转)

利用ajax异步校验验证码 示例结果如图所示 具体步骤如下: step1: jsp页面及js脚本 [html] view plain copy print? <%@page pageEncoding="utf-8" contentType="text/html; charset=utf-8" %> <html> <head> <title>form</title> <script type="

Python操作数据库(mysql redis)

一.python操作mysql数据库: 数据库信息:(例如211.149.218.16   szz  123456) 操作mysql用pymysql模块 #操作其他数据库,就安装相应的模块 import  pymysql ip='211.149.218.16' port=3306 passwd='123456' user='root' db='szz' conn=pymysql.connect(host=ip,user=user,port=port,passwd=passwd,db=db,cha

构建高性能数据库缓存之redis主从复制

一.什么是redis主从复制? 主从复制,当用户往Master端写入数据时,通过Redis Sync机制将数据文件发送至Slave,Slave也会执行相同的操作确保数据一致:且实现Redis的主从复制非常简单. 二.redis主从复制特点 1.同一个Master可以拥有多个Slaves. 2.Master下的Slave还可以接受同一架构中其它slave的链接与同步请求,实现数据的级联复制,即Master->Slave->Slave模式: 3.Master以非阻塞的方式同步数据至slave,这将

根据用户坐标,向数据库查找附近的商家

根据用户坐标,向数据库查找附近的商家:使用TP框架<?php/** * 计算某个经纬度的周围某段距离的正方形的四个点 * 地球半径,平均半径为6371km * @param lng float 经度 * @param lat float 纬度 * @param distance float 该点所在圆的半径,该圆与此正方形内切,默认值为0.5千米 * @return array 正方形的四个点的经纬度坐标 */function getAroundCoordinate($lng, $lat,$di

【Oracle连接字符串】【Oracle Net Manager 服务命名配置】【PL/SQL 登陆数据库】

连接数据库的几个重要参数: 1. 登陆用户名:user: 2. 登录密码:password: 3. 存放数据库的服务器地址(server_ip)和端口(server_port): 4. 数据库名(db_name): 一.Oracle连接字符串 我们如果要连接db_name这个数据,除了用户名密码以外,还需要输入类似“server_ip:server_port/db_name”这样一个连接字符串. <add key="ConnectionString" value="Da

不登陆数据库执行mysql命令

1.通过echo实现(这个比较常见) echo "show databases;" | mysql -uroot -pqwe123 -S /data/3307/mysql.sock 提示:此法适合单行字符串比较少的情况. 2.通过mysql -e参数实现 mysql -u root -pqwe123 -S /data1/3307/mysql.sock -e "show databases;" 3.通过cat实现(此法用的不多) cat |mysql -uroot -