nodejs+express实现用户登录,注册以及退出操作

nodejs实现用户登录注册退出状态

先从用户注册说起吧,毕竟注册才能去数据库增加数据,然后在增加校验,本次先从注册===>登录===>退出这个层次顺序说起!接下来看一下用户注册!

用户注册

前台页面以及ajax请求

           <form action="">
               <!--<p class="h3 pull-right">已有账号注册?马上登录!</p>-->
               <div class="form-group  col-md-8">
                   <label for="">用户名:</label>
                   <input type="text" placeholder="请输入您的用户名" id="user">
               </div>
               <div class="form-group col-md-8">
                   <label for="">密码:</label>
                   <input type="password" placeholder="这里是您的密码输入框!!!" id="pwd">
                   <br>
                   <button class="btn btn-primary btn-lg" type="button" id="login">登录</button>
               </div>

           </form>
<script>
  $('#login').click(function(){
      //ajax登录校验
      $.post("/dologin",{
          "username":$('#user').val(),
          "password":$('#pwd').val()
      },function(result){
          if(result==-1){
              alert("用户名不存在");
              $('#err').fadeIn(800);
              $('#err h3').html('用户名不在!请重试')
          }else if(result==0){
              alert("密码错误");
              $('#err').fadeIn(800);
              $('#err h3').html('密码错误!!请重新尝试登录')
          }else{
              alert("登录成功,马上进入首页!");
              window.location="/";
          }
      })
  })
</script>

nodejs处理后端


exports.doreg=function(req,res){
   var form = new formidable.IncomingForm();
   form.parse(req, function(err, fields, files) {
      var username=fields.username;
      var password=fields.password;
      //加密密码
       password=md5(md5(password).substr(8,6)+224+md5(password)+md5('symx'))
       console.log(password);
      if(err){
          res.json(-1);//服务器错误-1
          return;
      }else{
          //开始查找数据
          db.find("user",{"username":username},function(err,doc){
              if(doc.length!=0){
                  //数据存在
                  console.log("用户名存在");
                  res.json(-2);
                  return;
              }else{
                  db.insertMany("user",[{"username":username,"password":password}],function(err,result){
                      if(err){
                          console.log("数据插入失败");
                          return;
                      }else{
                          //注册成功,写入session;
                          req.session.login=1;
                          req.session.username=username;
                          res.json(1);//数据插入成功;
                          console.log("数据插入成功");

                      }
                  })
              }
          })
      }
    // console.log(fields)
   });
}

说明:本次采用的加密是md5混合md5(md5(password).substr(8,6)+224+md5(password)+md5('symx')),

双重加密,因此登录校验时候遵循这个规律铭文对比加密后字符串数据库校对!接下来看一下登录校验过程!

登录校验

前台页面以及ajax提交


          <form action="">
               <!--<p class="h3 pull-right">已有账号注册?马上登录!</p>-->
               <div class="form-group  col-md-8">
                   <label for="">用户名:</label>
                   <input type="text" placeholder="请输入您的用户名" id="user">
               </div>
               <div class="form-group col-md-8">
                   <label for="">密码:</label>
                   <input type="password" placeholder="这里是您的密码输入框!!!" id="pwd">
                   <br>
                   <button class="btn btn-primary btn-lg" type="button" id="login">登录</button>
               </div>

           </form>
<script>
  $('#login').click(function(){
      //ajax登录校验
      $.post("/dologin",{
          "username":$('#user').val(),
          "password":$('#pwd').val()
      },function(result){
          if(result==-1){
              alert("用户名不存在");
              $('#err').fadeIn(800);
              $('#err h3').html('用户名不在!请重试')
          }else if(result==0){
              alert("密码错误");
              $('#err').fadeIn(800);
              $('#err h3').html('密码错误!!请重新尝试登录')
          }else{
              alert("登录成功,马上进入首页!");
              window.location="/";
          }
      })
  })
</script>

nodejs校对负责校对数据库(与注册类似又相反操作)


exports.dologin=function(req,res){
   var form=new formidable.IncomingForm();
   form.parse(req,function(err,fields,files){
       var username=fields.username;
       var password=fields.password;
       //加密密码
       password=md5(md5(password).substr(8,6)+224+md5(password)+md5('symx'))
       console.log(username+"----密码:"+password);
       //查找数据
       db.find("user",{"username":username},function(err,doc){
           if(doc.length==0){
               res.json(-1);//用户名不存在
               return;
           }else{
               //用户名存在分为密码是否错误
               if(doc[0].password==password){
                   req.session.login="1";
                   req.session.username=username;
                   res.json(1);//登陆成功
                   return;
               }else{
                   res.json(0);//密码不匹配
               }
           }
       })
   })
}

用户登录错误的情况要进行分类,输入的用户名不存在或者密码错误等!这些校验成功后则就会登陆成功!接下来看一下如何进行用户退出操作!

用户退出

前台只需要将进行一个超链接进行get请求到退出的路由既可,这里不做前台页面,只进行后端node代码说明

exports.doLogout=function(req,res,next){
       req.session.destroy(function(err){
           if(err){
               console.log("退出失败!");
               return;
           }
           //清除登录cookie
           res.clearCookie(user_key)
           res.redirect("/")
       })
}

说明: res.clearCookie(user_key)  这个user_key就是被清除状态的session,这个变量首先要声明一下,然后在session中间件中声明这个name,这个类似去标记这个session


app.use(session({
   name:user_key,
   secret: 'keyboard cat',
   resave: false,
   saveUninitialized: true
}))

用户才登陆,注册,退出状态简单实现!如有问题下面留言,如有错误请帮忙指出谢谢!


本博客所有文章如无特别注明均为原创。作者:十月梦想复制或转载请以超链接形式注明转自 十月梦想博客
原文地址《nodejs+express实现用户登录,注册以及退出操作
分享到:更多

相关推荐

未登录,暂时无法评论和查看评论!

点击这里给我发消息点击此处联系博主!