node.js如何写登录注册? - 网站

node.js如何写登录注册?

分类:Node.js常见问题 · 发布时间:2019-08-08 09:33 · 阅读:1887

node.js写登录注册的方法:我们需要在nodejs文件中定义一个接口,这个接口接收三个参数,分别为act、user和password,后台通过这三个接口接收前台登录注册数据并返回一个json告诉前台登录注册结果。

nodejs用户注册登录的简单实现:
首先我们要先定义接口。我们定义一个叫做user的接口,并且这个接口接受三个参数,分别为act,user和password。

/user?act=reg&user=abc&pass=123
/user?act=login&user=abc&pass=123

并且当服务器接收到客户端的请求后,会返回一个json

{"ok":true,"msg":reason}
{"ok":false,"msg":reason}

接口的名字可以随便定义,只要前台和后台统一即可。因此这里的act,也可以换成type或者任意的文字。
具体如下:

const http = require("http");
const fs = require("fs");
const querystring = require("querystring");
const urlLib = require("url");
//存取用户的数据,一般来说要存入数据库
var users = {};
var server = http.createServer(function(req , res){  
//解析数据
  var str = "";  
  //POST数据不在req.url中
  //POST数据就是内容,直接过来
  //因此我们绑定两个事件来分段接收POST数据
  req.on('data' , function(data){
    str += data;
  });
  req.on('end' , function(){
      var obj = urlLib.parse(req.url , true);    
      const url = obj.pathname;    
      const GET = obj.query;    c
      onst POST = querystring.parse(str);    
      console.log(url,GET,POST);    
    //如果请求的是user就认定为请求接口
    //如果不是user都认为是请求文件
    if(url == '/user'){
       //接口
      //客户端是get请求方式
      //如果是POST请求,改成POST.act就可以
      switch(GET.act){
              //用户的动作是登陆
        case 'reg':
              //检查用户名是否存在
          if(users[GET.user]){
            //这边json的格式需要注意
            //不论是键还是值都得用双引号引起来
            //如果不这样做,前台将会无法解析json格式的字符串
            res.write('{"ok":false,"msg":"该用户已存在"}');
          }else{
          //没有注册过,严格来说需要验证所输入的用户名密码的合法性
            users[GET.user] = GET.pass;
            res.write('{"ok":true,"msg":"注册成功"}');
          }
                    break;
                    case 'login':         
           //检查用户是否存在
          if(users[GET.user] == null){
            res.write('{"ok":false,"msg":"该用户不存在"}');
          }else if(users[GET.user] !== GET.pass){            
          //检查密码是否正确
            res.write('{"ok":false,"msg":"账户或密码错误"}');
          }else{
            res.write('{"ok":true,"msg":"登陆成功"}');
          }
                    break;        
                    default:
          res.write('{"ok":false,"msg":"未知的错误"}');
      }
      res.end();
    }else{
      //请求文件
      //读取文件
      //客户端要请求的文件都存在www这个文件夹里
      var file_name = './www' + url;
      fs.readFile(file_name , function(err , data){
              if(err){
          res.write('404 is not found!');
        }else{
          res.write(data);
        }
        res.end();
      });
    }
  });
});

server.listen(3000 , function(err){  if(!err){
    console.log('server is listening 3000 port...');
  }else{
      console.log(err);
  }
});

然后我们需要一个html文件

<!DOCTYPE html><html lang="en"><head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title></head><body>
  username <input type="text" id="user"><br>
  password <input type="password" id="pass"><br>
  <input type="button" value="login" id="login_btn">
  <input type="button" value="register" id="reg_btn"></body>
  <script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script><script>
  $(function(){
    $("#login_btn").click(function(){
          if($("#user").val().length == 0){
                  return alert("Please input content");
      }
            if($("#pass").val().length == 0){
                    return alert("Please input password");
      }
      $.ajax({
              url:"/user",        t
              ype:"GET",
                      data:{
                                act:"login",          
                                user:$("#user").val(),          
                                pass:$("#pass").val()
        },
                success:function(str){
                          var json = eval("("+str+")");          
                          if(json.ok){
            alert("登陆成功");
          }else{
            alert(json.msg);
          }
        },
                error:function(err){
                  console.log(err);
        }
      });
    });
    $("#reg_btn").click(function(){
          if($("#user").val().length == 0){
                  return alert("Please input content");
      }
            if($("#pass").val().length == 0){
              return alert("Please input password");
      }
      $.ajax({
              url:"/user",        
              type:"GET",        
              data:{          
              act:"reg",          
              user:$("#user").val(),          
              pass:$("#pass").val()
        },
                success:function(str){          
                var json = eval("("+str+")");          
                if(json.ok){
            alert("注册成功");
          }else{
            alert(json.msg);
          }
        },
                error:function(err){          
                console.log(err);
        }
      });
    });
  });
  </script>
  </html>
标签:
node.js

相关文章

如何设置 nodejs 的环境变量

在前端开发过程中,我们需要对 application 运行的环境进行设置,一般会包括开发环境development,生产环境production,每个环境可以对应不同的一些配置,例如不同环境下请求的地址...

谈谈Node.js与JavaScript的差异

Javascript是一种web前端语言,主要用于web开发中,由浏览器解析执行。Node.js是一个可以快速构建网络服务及应用的平台,是用Javascript语言构建的服务平台。

npm install安装报错怎么解决?

解决方法:1、报“operation not permitted”错误,通过“npm i 包名 --no-optional”解决;2、报“Missing: chromedriver”错误,表示没有安装chromedriver,安装一下即可。

怎么使用npm下载vue.js?

使用npm下载vue.js的方法:1、安装node.js和npm;2、安装cnpm;3、使用命令cnpm install -g vue-cli来安装即可。

vue.js和node.js是什么关系?

vue.js和node.js并没有关系,vue.js是前端框架,算是js的三大框架之一吧,node.js是后端开发语言,同php、java、c#一样的。但是他们可以配合使用。

返回分类 返回首页