nodejsは登録ログインを実現

4716 ワード

ユーザー登録ログインの簡単な実装は、まずインタフェースを定義します.userというインタフェースを定義し,act,user,passwordの3つのパラメータを受け入れる.
/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;
    const 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ファイルが必要です



  
  
  
  Document


  username 
password
$(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", type:"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); } }); }); });