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中SSL服务的性能
Jul 15 NodeJs
Nodejs express框架一个工程中同时使用ejs模版和jade模版
Dec 28 NodeJs
Nodejs获取网络数据并生成Excel表格
Mar 31 NodeJs
详解nodejs 文本操作模块-fs模块(一)
Dec 22 NodeJs
nodejs爬虫遇到的乱码问题汇总
Apr 07 NodeJs
详解nodejs微信公众号开发——3.封装消息响应模块
Apr 10 NodeJs
Nodejs 和 Electron ubuntu下快速安装过程
May 04 NodeJs
详解nodejs解压版安装和配置(带有搭建前端项目脚手架)
Dec 06 NodeJs
M2实现Nodejs项目自动部署的方法步骤
May 05 NodeJs
nodejs搭建本地服务器并访问文件操作示例
May 11 NodeJs
nodejs log4js 使用详解
May 31 NodeJs
NodeJS多种创建WebSocket监听的方式(三种)
Jun 04 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
3种平台下安装php4经验点滴
2006/10/09 PHP
探讨PHP删除文件夹的三种方法
2013/06/09 PHP
基于jquery的跨域调用文件
2010/11/19 Javascript
setTimeout函数兼容各主流浏览器运行执行效果实例
2013/06/13 Javascript
jQuery+ajax实现文章点赞功能的方法
2015/12/31 Javascript
倾力总结40条常见的移动端Web页面问题解决方案
2016/05/24 Javascript
深入浅出ES6新特性之函数默认参数和箭头函数
2016/08/01 Javascript
vue 表单输入格式化中文输入法异常问题
2018/05/30 Javascript
详解ES7 Decorator 入门解析
2019/02/18 Javascript
浅谈layui使用模板引擎动态渲染元素要注意的问题
2019/09/14 Javascript
layui内置模块layim发送图片添加加载动画的方法
2019/09/23 Javascript
[05:00]第二届DOTA2亚洲邀请赛主赛事第三天比赛集锦.mp4
2017/04/04 DOTA
Python的Flask框架的简介和安装方法
2015/11/13 Python
对pandas将dataframe中某列按照条件赋值的实例讲解
2018/11/29 Python
python重试装饰器的简单实现方法
2019/01/31 Python
Python 虚拟空间的使用代码详解
2019/06/10 Python
python里 super类的工作原理详解
2019/06/19 Python
python getpass实现密文实例详解
2019/09/24 Python
Python pathlib模块使用方法及实例解析
2020/10/05 Python
python爬虫中PhantomJS加载页面的实例方法
2020/11/12 Python
基于DOM+CSS3实现OrgChart组织结构图插件
2016/03/02 HTML / CSS
世界最大的海报和艺术印刷商店:AllPosters.com
2017/02/01 全球购物
美国女士泳装店:Swimsuits For All
2017/03/02 全球购物
Sasa莎莎海外旗舰店:香港莎莎美妆平台
2018/03/21 全球购物
Kathmandu新西兰官网:新西兰户外运动品牌
2019/07/27 全球购物
高中自我评价分享
2013/12/05 职场文书
教师辞职报告范文
2014/01/20 职场文书
运动会致辞稿50字
2014/02/04 职场文书
物流管理专业毕业生求职信
2014/03/23 职场文书
超市商业计划书
2014/05/04 职场文书
交通事故赔偿协议书怎么写
2014/10/04 职场文书
2014年保卫工作总结
2014/12/05 职场文书
大学生毕业个人总结
2015/02/15 职场文书
学生会干部任命书
2015/09/21 职场文书
人民调解协议书
2016/03/21 职场文书
Redis高并发缓存架构性能优化
2022/05/15 Redis