node.js如何写登录注册?

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如何写登录注册?的详细内容,更多请关注易知道|edz.cc其它相关文章!

推荐阅读