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之请求路由概述
Jul 05 NodeJs
基于 Docker 开发 NodeJS 应用
Jul 30 NodeJs
nodejs教程之环境安装及运行
Nov 21 NodeJs
详解nodejs微信公众号开发——1.接入微信公众号
Apr 10 NodeJs
nodejs和C语言插入mysql数据库乱码问题的解决方法
Apr 14 NodeJs
nodejs之get/post请求的几种方式小结
Jul 26 NodeJs
Nodejs进阶之服务端字符编解码和乱码处理
Sep 04 NodeJs
详解Nodejs 通过 fs.createWriteStream 保存文件
Oct 10 NodeJs
基于nodejs res.end和res.send的区别
May 14 NodeJs
Mac下通过brew安装指定版本的nodejs教程
May 17 NodeJs
nodejs的路径问题的解决
Jun 30 NodeJs
NodeJs crypto加密制作token的实现代码
Nov 15 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
如何提高MYSQL数据库的查询统计速度 select 索引应用
2007/04/11 PHP
php实例化一个类的具体方法
2019/09/19 PHP
php设计模式之享元模式分析【星际争霸游戏案例】
2020/03/23 PHP
两个多选select(multiple左右)添加、删除选项和取值实例
2014/05/12 Javascript
js获取网页可见区域、正文以及屏幕分辨率的高度
2014/05/15 Javascript
angularjs实现与服务器交互分享
2014/06/24 Javascript
jQuery实现MSN中文网滑动Tab菜单效果代码
2015/09/09 Javascript
使用JQuery实现智能表单验证功能
2016/03/08 Javascript
js实现带农历和八字等信息的日历特效
2016/05/16 Javascript
JS基础随笔(菜鸟必看篇)
2016/07/13 Javascript
浅谈MVC+EF easyui dataGrid 动态加载分页表格
2016/11/10 Javascript
jQuery的事件预绑定
2016/12/05 Javascript
原生js实现弹出层效果
2017/01/20 Javascript
vue中实现先请求数据再渲染dom分享
2018/03/17 Javascript
详解Vue实战指南之依赖注入(provide/inject)
2018/11/13 Javascript
微信小程序的tab选项卡的实现效果
2019/05/15 Javascript
javascript 使用sleep函数的常见方法详解
2020/04/26 Javascript
JS+Canvas实现五子棋游戏
2020/08/26 Javascript
python调用java的Webservice示例
2014/03/10 Python
在Ubuntu系统下安装使用Python的GUI工具wxPython
2016/02/18 Python
利用Python如何生成随机密码
2016/04/20 Python
详解Python中where()函数的用法
2018/03/27 Python
python抓取网页内容并进行语音播报的方法
2018/12/24 Python
Java和Javasciprt的区别
2012/09/02 面试题
修理厂厂长岗位职责
2014/01/30 职场文书
部队万能检讨书
2014/02/20 职场文书
幼儿园教学随笔感言
2014/02/23 职场文书
我们的节日端午节活动方案
2014/03/02 职场文书
自荐信的格式
2014/03/10 职场文书
法人授权委托书格式
2014/04/08 职场文书
学生会干部自我鉴定2014
2014/09/18 职场文书
2014年国庆晚会主持词
2014/09/19 职场文书
信用卡工作证明范本
2015/06/19 职场文书
my.ini优化mysql数据库性能的十个参数(推荐)
2021/05/26 MySQL
Python OpenCV实现传统图片格式与base64转换
2021/06/13 Python
关于JavaScript回调函数的深入理解
2021/06/27 Javascript