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其它相关文章!