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进程管理模块forever详解
Jun 01 NodeJs
nodejs中简单实现Javascript Promise机制的实例
Dec 06 NodeJs
轻松创建nodejs服务器(5):事件处理程序
Dec 18 NodeJs
nodejs进阶(6)—连接MySQL数据库示例
Jan 07 NodeJs
Nodejs 发送Post请求功能(发短信验证码例子)
Feb 09 NodeJs
nodejs使用express创建一个简单web应用
Mar 31 NodeJs
nodejs个人博客开发第六步 数据分页
Apr 12 NodeJs
用Nodejs搭建服务器访问html、css、JS等静态资源文件
Apr 28 NodeJs
nodejs socket服务端和客户端简单通信功能
Sep 14 NodeJs
nodejs 如何手动实现服务器
Aug 20 NodeJs
NodeJS服务器实现gzip压缩的示例代码
Oct 12 NodeJs
在NodeJs中使用node-schedule增加定时器任务的方法
Jun 08 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
咖啡机如何保养和日常清洁?
2021/03/03 冲泡冲煮
支持中文的PHP按字符串长度分割成数组代码
2015/05/17 PHP
php将字符串随机分割成不同长度数组的方法
2015/06/01 PHP
PHP数据库操作Helper类完整实例
2016/05/11 PHP
Ubuntu 16.04下安装PHP 7过程详解
2017/03/28 PHP
PHP异步进程助手async-helper
2018/02/05 PHP
JavaScript setTimeout和setInterval的使用方法 说明
2010/03/25 Javascript
原生js 秒表实现代码
2012/07/24 Javascript
JS根据年月获得当月天数的实现代码
2014/07/03 Javascript
jquery实现在网页指定区域显示自定义右键菜单效果
2015/08/25 Javascript
使用JavaScript实现弹出层效果的简单实例
2016/05/31 Javascript
基于jQuery实现发送短信验证码后的倒计时功能(无视页面关闭)
2016/09/02 Javascript
Vue.js 和 MVVM 的注意事项
2016/11/07 Javascript
Array数组对象中的forEach、map、filter及reduce详析
2018/08/02 Javascript
vue单页缓存存在的问题及解决方案(小结)
2018/09/25 Javascript
微信小程序实现登录注册tab切换效果
2020/12/29 Javascript
js作用域和作用域链及预解析
2019/04/11 Javascript
Vue Autocomplete 自动完成功能简单示例
2019/05/25 Javascript
微信小程序模板消息推送的两种实现方式
2019/08/27 Javascript
JavaScript缺少insertAfter解决方案
2020/07/03 Javascript
javascript实现时间日期的格式化的方法汇总
2020/08/06 Javascript
[48:00]EG vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.26
2018/08/29 DOTA
使用python搭建Django应用程序步骤及版本冲突问题解决
2013/11/19 Python
python snownlp情感分析简易demo(分享)
2017/06/04 Python
详解Python 序列化Serialize 和 反序列化Deserialize
2017/08/20 Python
Django values()和value_list()的使用
2020/03/31 Python
pandas to_excel 添加颜色操作
2020/07/14 Python
Django数据统计功能count()的使用
2020/11/30 Python
Django中如何用xlwt生成表格的方法步骤
2021/01/31 Python
iframe在移动端的缩放的示例代码
2018/10/12 HTML / CSS
美国最大的团购网站:Groupon
2016/07/23 全球购物
美国孕妇装购物网站:Motherhood Maternity
2019/09/22 全球购物
心碎乌托邦的创业计划书范文
2013/12/26 职场文书
宿舍使用违章电器检讨书
2014/01/12 职场文书
学生抄袭作业的检讨书
2014/10/02 职场文书
5道关于python基础 while循环练习题
2021/11/27 Python