nodejs实现用户登录路由功能


Posted in NodeJs onMay 22, 2019

经过前面几次的学习,已经可以做下小功能,今天要实现的事用户登录路由。

一、users_model.js  功能:定义用户对象模型

var mongoose=require('mongoose'),
   Schema=mongoose.Schema;
var UserSchema=new Schema({
   username:{type:String,unique:true},
   email:String,
   color:String,
   hashed_password:String
});
mongoose.model('User',UserSchema);

二、users_controller.js  功能:为Express服务器实现用户登录路由

var crypto=require('crypto');
var mongoose=require('mongoose'),User=mongoose.model('User');
function hashPW(pwd){
  return crypto.createHash('sha256').update(pwd).
  digest('base64').toString();
}
//实现用户登录路由
exports.login=function (req,res){
  User.findOne({username:req.body.username})
  .exec(function(err,user){
    if(!user){
      err='User Not Found';
    }else if(user.hashed_password===hashPW(req.body.password.toString())){
      req.session.regenerate(function(){
        req.session.user=user.id;
        req.session.username=user.username;
        req.session.msg='Authenticated as ' +user.username;
        res.redirect('/');
      });
    }else{
      err='Authentication failed. ';
    }
    if(err){
      req.session.regenerate(function(){
        req.session.msg=err;
        res.redirect('/login');
      });
    }
  });
};

三、login.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>用户登录</title>
<link rel="stylesheet"type="text/css" href="/static/css/styles.css" rel="external nofollow" />
</head>
<body>
<div class="form-container">
 <p class="form-header">登录</p>
 <form method="POST" >
  <label>用户名:</label>
   <input type="text" name="username"><br>
   <label>密码:</label>
   <input type="password" name="password"><br>
   <input type="submit" value="登录">
 </form>
 </div>
 <a href="/signup" rel="external nofollow" >注册</a>
 <hr> <%=msg %>
</body>
</html>

四、routes.js 功能:为Express服务器实现处理Web请求路由

var crypto=require('crypto');
var express=require('express');
module.exports=function(app){
  var users=require('./controllers/users_controller');
  app.use('/static',express.static('./static')).
  use('/lib',express.static('../lib')
);
app.get('/login',function(req,res){
  if(req.session.user){
    res.redirect('/');
  }
  res.render('login',{msg:req.session.msg})
});
app.post('/login',users.login);

页面效果

nodejs实现用户登录路由功能

总结

以上所述是小编给大家介绍的nodejs中实现用户登录路由功能,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

NodeJs 相关文章推荐
NodeJS与Mysql的交互示例代码
Aug 18 NodeJs
Nodejs学习笔记之NET模块
Jan 13 NodeJs
NodeJS学习笔记之Connect中间件模块(二)
Jan 27 NodeJs
nodejs 终端打印进度条实例代码
Apr 22 NodeJs
nodejs制作爬虫实现批量下载图片
May 19 NodeJs
nodejs mysql 实现分页的方法
Jun 06 NodeJs
NodeJS设计模式总结【单例模式,适配器模式,装饰模式,观察者模式】
Sep 06 NodeJs
nodejs创建简易web服务器与文件读写的实例
Sep 07 NodeJs
nodejs实现OAuth2.0授权服务认证
Dec 27 NodeJs
原生nodejs使用websocket代码分享
Apr 07 NodeJs
M2实现Nodejs项目自动部署的方法步骤
May 05 NodeJs
typescript nodejs 依赖注入实现方法代码详解
Jul 21 NodeJs
基于nodejs的微信JS-SDK简单应用实现
May 21 #NodeJs
nodejs中实现用户注册路由功能
May 20 #NodeJs
nodejs实现日志读取、日志查找及日志刷新的方法分析
May 20 #NodeJs
NodeJS读取分析Nginx错误日志的方法
May 14 #NodeJs
nodejs搭建本地服务器并访问文件操作示例
May 11 #NodeJs
M2实现Nodejs项目自动部署的方法步骤
May 05 #NodeJs
nodejs通过钉钉群机器人推送消息的实现代码
May 05 #NodeJs
You might like
一个简洁的多级别论坛
2006/10/09 PHP
深入理解ob_flush和flush的区别(ob_flush()与flush()使用方法)
2013/02/06 PHP
qq登录,新浪微博登录接口申请过程中遇到的问题
2014/07/22 PHP
使用php转义输出HTML到JavaScript
2015/03/27 PHP
jQuery UI 应用不同Theme的办法
2010/09/12 Javascript
去掉gridPanel表头全选框的小例子
2013/07/18 Javascript
JS生成随机字符串的多种方法
2014/06/10 Javascript
原生js实现日期联动
2015/01/12 Javascript
JavaScript中关于for循环删除数组元素内容时出现的问题
2016/11/21 Javascript
Javascript中 toFixed四舍六入方法
2017/08/21 Javascript
vue如何通过id从列表页跳转到对应的详情页
2018/05/01 Javascript
手淘flexible.js框架使用和源代码讲解小结
2018/10/15 Javascript
微信公众号H5支付接口调用方法
2019/01/10 Javascript
element-ui table组件如何使用render属性的实现
2019/11/04 Javascript
详解Vue 的异常处理机制
2020/11/30 Vue.js
[01:00:53]2018DOTA2亚洲邀请赛3月29日 小组赛B组 iG VS Secret
2018/03/30 DOTA
python解析模块(ConfigParser)使用方法
2013/12/10 Python
Python中无限元素列表的实现方法
2014/08/18 Python
Python中random模块生成随机数详解
2016/03/10 Python
Django教程笔记之中间件middleware详解
2018/08/01 Python
python+ffmpeg批量去视频开头的方法
2019/01/09 Python
商场消防管理制度
2014/01/12 职场文书
大学生毕业自我鉴定范文
2014/02/03 职场文书
优秀实习生感言
2014/03/01 职场文书
酒店保安领班职务说明书
2014/03/04 职场文书
研究生导师评语
2014/12/31 职场文书
2015年党建工作目标责任书
2015/05/08 职场文书
巴黎圣母院观后感
2015/06/10 职场文书
搞笑欢迎词大全
2015/09/30 职场文书
pytorch MSELoss计算平均的实现方法
2021/05/12 Python
vue点击弹窗自动触发点击事件的解决办法(模拟场景)
2021/05/25 Vue.js
Mysql基础知识点汇总
2021/05/26 MySQL
pytorch fine-tune 预训练的模型操作
2021/06/03 Python
解决mysql:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO/YES)
2021/06/26 MySQL
Javascript中async与await的捕捉错误详解
2022/03/03 Javascript
PyCharm 配置SSH和SFTP连接远程服务器
2022/05/11 Python