使用Node.JS实现注册和登录功能(笔记)

作者:神秘网友 发布时间:2021-02-28 12:50:10

使用Node.JS实现注册和登录功能(笔记)

server.js页面代码

// 引入需要的依赖
const express=require('express');    //框架名
const cookieParser=require('cookie-parser');      //
const cookieSession=require('cookie-session');
const bodyParser=require('body-parser');    //获取post请求数据

//获取post数据配置
var server=express();
server.use(bodyParser.urlencoded({extended:false}))
server.use(bodyParser.json())
//设置跨域访问
server.all("*",function(req,res,next){
  //设置允许跨域的域名,*代表允许任意域名跨域
  res.header("Access-Control-Allow-Origin","*");
  //允许的header类型
  res.header("Access-Control-Allow-Headers","content-type");
  //跨域允许的请求方式 
  res.header("Access-Control-Allow-Methods","DELETE,PUT,POST,GET,OPTIONS");
  if (req.method.toLowerCase() == 'options'){
    // res.send(200);  //让options尝试请求快速结束
    res.sendStatus(200)
  }else{
    next();
  }
})
server.listen(9111);
// cookie session
(function(){
  server.use(cookieParser());
  server.use(cookieSession({
    name:"sess_id",
    keys:["232342342342","12312313213","sdfsaf23r34r3f","123124134dasda"],
    maxAge:20*60*1000
  }))
})();
// route   小型的express   路由
server.use('/aaa/',require('./route/ceshi')());    //测试
server.use('/admin/',require('./route/admin')());

注册登录接口代码

// 引入依赖
const express = require('express');   
const mysql = require('mysql');
const crypto = require('crypto');  //加载crypto库
const setPassword = require('../libs/setPassword')    //字符串转换MD5函数
//连接数据库
var connection = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: '123456',
  database: 'boke'
});
connection.connect();
module.exports = function () {
  var route = express.Router();
  route.post('/reg', function (req, res) {
    let username = req.body.username;   //用户名
    let password = setPassword(req.body.password, crypto);   //密码
    connection.query(`SELECT * FROM admin WHERE username='${username}'`, function (err, data) {
      if (err) {
        res.send(err).end();
      } else {
        if (data.length == 0) {
          let sqltext = `INSERT INTO admin (username,password) VALUES('${username}','${password}')`;
          connection.query(sqltext, function (err, data) {
            if (err) {
              res.send(err).end()
            } else {
              res.send({ code: 200, msg: "注册成功!" }).end();
            }
          })
        } else {
          res.send({ code: 500, msg: "用户名已存在,请重新注册!" }).end();
        }
      }
    })
  })
  route.post('/login', function (req, res) {
    let username = req.body.username;   //用户名
    let password = setPassword(req.body.password, crypto);   //密码
    connection.query(`SELECT * FROM admin WHERE username='${username}'`, function (err, data) {
      if (err) {
        res.send(err).end();
      } else {
        if (data.length  0) {
          if (data[0].password === password) {
            res.send({ code: 200, data: data[0] }).end();
          } else {
            res.send({ code: 500, msg: "用户名或密码错误" }).end();
          }
        } else {
          res.send({ code: 500, msg: "用户名或密码错误" }).end();
        }
      }
    })
  })
  return route
}

setPassword 函数

function setPassword(pwd,crypto){
  let password=`${pwd}guoyakun`
  const md5 = crypto.createHash('md5');
  md5.update(password);
  var newpwd=md5.digest('hex');
  return newpwd
}
module.exports=setPassword

使用Node.JS实现注册和登录功能(笔记) 相关文章

  1. 【安卓】使用Handler出现的警告

    使用Handler出现的警告 零、原由 安卓中使用Hander时出现了如下警告: This Handler class should be static or leaks might occur (anonymous android.os.Handler) 网上建议使用如下方案: private Handler mHandler2 = new Handler(new Handler.Callback()

  2. 从零开始使用 webpack5 搭建 react 项目

    本文的示例项目源码可以点击 这里 获取 一、前言 webpack5 也已经发布一段时间了,其模块联邦、bundle 缓存等新特性值得在项目中进行使用。经过笔者在公司实际项目中的升级结果来看,其提升效果显著,热更新时间由原来的 8s 减少到了 2s,会极大的提升开发幸

  3. javascript正则表达式学习笔记

    使用规则 用//包裹语句\b 单词边界* 转义\g 全文搜索m换行搜索i 忽略大小写lastIndex 是当前表达式匹配内容的最后一个字符的下一个位置source 正则表达式的文本字符串字符类 泛指 [abc] 把a或b或c归为一类(匹配abc中任意一种) 取反^ [^abc]范围类 [a-z] 匹

  4. MongoDB使用C驱动基本的CRUD操作

    查找文档 要使用C驱动程序查询MongoDB集合,请使用函数mongoc_collection_find_with_opts()。这会将光标返回到匹配的文档。以下示例遍历结果游标,并将匹配项打印 stdout 为JSON字符串。 使用文档作为查询说明符;例如, { "color" : "red" } 将匹配名称为

  5. deepin15.11系统使用罗技k380键盘

    罗技k380键盘官方支持安卓、windows、macos,就是没有支持Linux系统。在开发过程中使用的是Deepin15.11系统,如何连接罗技k380就是一个问题,折腾了一段时间后解决这个问题。记录下来留给需要的人少折腾。 在系统的蓝牙管理中是无法连接罗技k380,需要使用 b

  6. Node.js---MySQL的增删改查

    在node中,我们获取到的数据需要存储到数据库中,所以我们要不停的往数据库里面进行操作,其中最重要的就是增删改查 在如何使用MySQL中我们说到,我们需要用到createPool()来让我们的后台与数据库进行连接,这里为了完成数据库的增删改查,我们还需要用到他

  7. .net5 core webapi进阶之四:自定义中间件的使用

    一、什么是中间件先看看微软官方文档对中间件的定义: 官网地址:https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/middleware/view=aspnetcore-5.0 官网还给出了一张中间件调用的示意图,如下: 简而言之,我们可以把中间件理解成一个功能,它可

  8. web应用使用spring

    原文链接http://zhhll.icu/2021/01/06/%E6%A1%86%E6%9E%B6/spring/web%E5%BA%94%E7%94%A8%E4%BD%BF%E7%94%A8spring/ web应用使用spring 对于java而言,使用最多的还是web开发,如何在web应用中使用spring呢,web应用中没有main方法,而且必须在servlet容器加

  9. AOP及实现方式

    AOP及实现方式 一、AOP简介 1.1 什么是AOP AOP(Aspect Oriented Programming)意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式

  10. Python爬虫〇七———数据解析之XPATH的使用

    今天来总结最后一种说句解析的方式——XPath。 XPath是一门在XML文档中查找信息的语言,用于在XML文档中通过元素和属性进行导航。 XPath简介 下面来简单介绍一下XPath。 XPath的特点 XPath使用路径表达式在XML文档中进行导航 XPath包含一个标准函数库 XPath

每天更新java,php,javaScript,go,python,nodejs,vue,android,mysql等相关技术教程,教程由网友分享而来,欢迎大家分享IT技术教程到本站,帮助自己同时也帮助他人!

Copyright 2020, All Rights Reserved. Powered by 跳墙网(www.tqwba.com)|网站地图|关键词