Node基础入门(四):案例

尾调潮涌
• 阅读 924

上一篇《Node基础入门(三):数据交互》

用以上所学知识开发一个登录/注册的程序。

一、需求分析

  • 输入账户和密码,点击登录,查询数据库是否有该账户,有则继续检查密码是否正确,不正确则提示“密码错误”,正确则登录成功,跳转后台页面,无该账户则提示“账户不存在”;
  • 输入账户和密码,点击注册,查询数据库是否有该账户,有则提示“账户已存在”,无则注册成功;
  • 由于还未学习数据库,所以我们用一个user对象(JSON)代替用户表。

二、接口设计

  • 名称:login / reg(注册和登录接口几乎相同)
  • 请求方式:get / post(登录用get,注册用post)
  • 参数:

    • username 账户(字符串)
    • password 密码 (字符串)
  • 返回:

    • err 错误码(数字,0:正确,1:错误)
    • msg 返回信息(字符串)

三、代码开发

app.js

let http = require('http')
let url = require('url')
// 将post的数据从字符串类型转化为我们需要的json类型
let querystring = require('querystring')
// 为了成功访问http://localhost:8080/login.html
let fs = require('fs')

// 这里用一个json代替数据库,假设用户表已经有一个用户admin,密码是123
let user = {
  admin: '123'
}

http.createServer((req, res) => {
  // 获取数据
  let path, get, post

  if (req.method === 'GET') {
    let {pathname, query} = url.parse(req.url, true)
    path = pathname
    get = query
    complete()
  } else if (req.method === 'POST') {
    let result = []
    path = req.url
    req.on('data', buffer => {
      result.push(buffer)
    })
    req.on('end', () => {
      // 合并片段,然后转成字符串,最后处理成json
      post = querystring.parse(Buffer.concat(result).toString())
      complete()
    })
  }

  function complete () {
    if (path === '/login') {
      // 解决中文乱码
      res.writeHead(200, {
        'Content-Type': 'text/plain; charset=utf-8'
      })
      let {username, password} = get
      if (!user[username]) {
        res.end(JSON.stringify({
          err: 1,
          msg: '账户不存在'
        }))
      } else if (user[username] !== password) {
        res.end(JSON.stringify({
          err: 1,
          msg: '密码错误'
        }))
      } else {
        res.end(JSON.stringify({
          err: 0,
          msg: '登录成功'
        }))
      }
    } else if (path === '/reg') {
      res.writeHead(200, {
        'Content-Type': 'text/plain; charset=utf-8'
      })
      let {username, password} = post
      if (user[username]) {
        res.end(JSON.stringify({
          err: 1,
          msg: '账户已存在'
        }))
      } else {
        user[username] = password
        res.end(JSON.stringify({
          err: 0,
          msg: '注册成功'
        }))
      }
    } else {
      // 说明是文件,则调用fs.readFile(),因此才能成功访问http://localhost:8080/login.html
      fs.readFile(`.${req.url}`, (err, data) => {
        if (err) {
          res.end('404')
        } else {
          res.end(data)
        }
      })
    }
  }
}).listen(8080)

login.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>登录/注册</title>
</head>
<body>
<div class="wrapper">
  账户:<input type="text" id="username"><br>
  密码:<input type="password" id="password"><br>
  <button id="login">登录</button><br>
  <button id="reg">注册</button>
</div>

<!--我们需要引入jQuery(目的是发送ajax请求),利用之前学到的npm install jquery安装jquery,成功后将node_modules/jquery/dist/里面的jquery.min.js拷贝至项目根目录-->
<script src="jquery.min.js"></script>
<script>
  // 点击登录
  $('#login').click(() => {
    $.ajax({
      url: '/login',
      method: 'get',
      data: {
        username: $('#username').val(),
        password: $('#password').val()
      },
      dataType: 'json',
      success (res) {
        if (res.err) {
          alert(res.msg)
        } else {
          alert('登录成功')
          location.href = 'admin.html'
        }
      }
    })
  })
  // 点击注册
  $('#reg').click(() => {
    $.ajax({
      url: '/reg',
      method: 'post',
      data: {
        username: $('#username').val(),
        password: $('#password').val()
      },
      dataType: 'json',
      success (res) {
        if (res.err) {
          alert(res.msg)
        } else {
          alert('注册成功')
        }
      }
    })
  })
</script>
</body>
</html>

admin.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>后台</title>
</head>
<body>
<h2>这里是后台首页</h2>
</body>
</html>

四、测试截图

1. 账户:admin,密码:123,点击登录,登录成功

Node基础入门(四):案例

2. 账户:admin,密码:111,点击登录,密码错误

Node基础入门(四):案例

3. 账户:eric,密码:123,点击登录,账户不存在

Node基础入门(四):案例

4. 账户:eric,密码:123,点击注册,注册成功

Node基础入门(四):案例

5. 账户:eric,密码:123,点击登录,登录成功

Node基础入门(四):案例

6. 账户:eric,密码:123,点击注册,账户已存在

Node基础入门(四):案例

点赞
收藏
评论区
推荐文章
Easter79 Easter79
3年前
ssh连接服务器
1.概述ssh是一种网络通信协议,用于计算机之间的加密登录.一般用ssh连接服务器有两种方式:密码认证与密钥认证.密码认证就是通过传统的输入密码的方式登录,密钥认证就是把产生的公钥注册到服务器后,用私钥登录,这样就可以不用每次登录输入密码.特别适合作者这种脑残记不住密码的懒人.2.密码认证密码认证登录直接在终端使用ssh
Stella981 Stella981
3年前
Python爬虫之用脚本登录Github并查看信息
前言分析目标网站的登录方式目标地址:https://github.com/login登录方式做出分析:第一,用form表单方式提交信息,第二,有csrf\_token,第三,是以post请求发送用户名和密码时,需要第一次get请求的cookie第四,登录成功以
Wesley13 Wesley13
3年前
MySql基础指令
登录MySQLWindows系统下:运行cmd输入:mysqlu用户名p接着输入用户密码即可进入数据库交互界面:mysqlMacOS系统:在终端输入上面的命令,接着输入密码同样可以进入交互界面:mysql命令行创建和删除数据库MacOS系统和Windows系统需
Wesley13 Wesley13
3年前
mysql5.7 修改root密码无法登陆原因
升级的mysql5.7修改完root账户密码后仍然无法登陆,查阅资料可能和user表的plugin字段为空有关。1、首先将my.ini中加入在\mysqld\节点上加skipgranttables主要作用是:跳过表中的验证,可以无密码登陆。2、登录之后查询plugin字段值:mysqlselectpluginf
Wesley13 Wesley13
3年前
Java通过BCrypt加密
<divid"cnblogs\_post\_body"class"blogpostbody"<div一、概述</div<p&nbsp;</p<p在用户模块,对于用户密码的保护,通常都会进行加密。我们通常对密码进行加密,然后存放在数据库中,在用户进行登录的时候,将其输入的密码进行加密然后与数据库中存放的密文进行比较,以验证用户密码是否
Stella981 Stella981
3年前
Spring security(四)
关注我,可以获取最新知识、经典面试题以及技术分享  现在主流的登录方式主要有3种:账号密码登录、短信验证码登录和第三方授权登录,前面一节Springsecurity(三)认证过程(https://my.oschina.net/ccwwlx/blog/3115960)已分析了springsecurity账号密码方式登陆,现在我们来分析
Wesley13 Wesley13
3年前
mysql 开启远程授权
1,确定/etc/sysconfig/iptables文件里面开放了3306端口2,允许root用户可以在任何地方登录//登录 Mysql mysql u root p   // 设置 root 账户用 admin123 的密码可以在任何地方登录 GRANT ALL PRIVILEGE
Stella981 Stella981
3年前
Django网站实战——手把手带大家制作一个经典的网站
点击上方“Python爬虫与数据挖掘”,进行关注回复“书籍”即可获赠Python从入门到进阶共10本电子书今日鸡汤别梦依依到谢家,小廊回合曲阑斜。一、前言今天小编带大家制作一个经典的网站的案例,功能包括登录、注册、注销、改密、免密登录、忘记密码,那么下面就让我们开始吧。二、创建项目并创建子
Wesley13 Wesley13
3年前
PHP制作登录注册页面
用PHP制作登录和注册页面,一共6个页面,三个可视页面:登录、注册、主页,三个处理页面:验证、添加用户、清除退出注册<!这是注册页面d&z2z.php,用户可以提交用户名和密码进行注册,点击注册按钮提交给d&z4add.php页面处理<!doctypehtml<html<head
Wesley13 Wesley13
3年前
Java 可以用已知帐号登录,且可以注册后登录的小程序
|需求说明1、写一个注册和登录功能,使用已知的帐号和密码可以直接登录,如果没有帐号,注册后可以用刚注册的帐号登录2、注册的时候,如果帐号已经存在,不能注册3、注册的时候,设置两次密码,如果两次密码设置得不同,不能注册4、登录的时候,密码输错三次,锁定帐号5、登录的时候,如果没有这个帐号,则提醒用户注册,注册后可以登录6、登录的时候
Wesley13 Wesley13
3年前
Oracle 用户与模式的关系
一、用户登录Oracle数据库的安全保护流程分为3个步骤。1、用户向数据库提供身份识别信息,即提供一个数据库账号2、证明身份识别信息是否有效,通过密码来实现3、用户输入的密码经过数据库的核对确认是否正确。最后,假设密码正确,那么数据库认为身份识别信息是课信赖的。此时,数据库会基于身份识别信息的基础上确定用户所拥有