修改index.js如下:

var express = require('express');
var router = express.Router();
var crypto=require('crypto');
var User=require("../models/user.js"); /* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', {
title: '主页',error:req.flash("error").toString(),
success:req.flash("success").toString(),
user:req.session.user
});
}); router.get('/reg',checkNotLogin);
router.get('/reg',function(req,res,next){
res.render('reg', { title: '注册' });
}); router.post('/reg',checkNotLogin);
router.post('/reg',function(req,res,next){
var name=req.body.name,
password=req.body.password,
repassword=req.body.repassword; if(repassword!==password){
req.flash("error","两次输入的密码不一致");
return res.redirect("/reg");
} var md5=crypto.createHash('md5');
password=md5.update(req.body.password).digest('hex');
var newUser=new User({
name:req.body.name,
password:password,
email:req.body.email
});
User.get(newUser.name,function(err,user){
if(user){
req.flash('error',"用户名已存在");
return res.redirect("/reg");
}
newUser.save(function(err,user){
if(err){
req.flash("error",err);
return res.redirect("/reg");
}
req.session.user=user;
req.flash("success","注册成功");
res.redirect("/");
});
});
}); router.get('/login',checkNotLogin);
router.get('/login',function(req,res,next){
res.render('login', { title: '登录' });
}); router.post('/login',checkNotLogin);
router.post('/login',function(req,res,next){
var md5=crypto.createHash("md5");
password=md5.update(req.body.password).digest('hex');
User.get(req.body.name,function(err,user){
if(!user){
req.flash('error',"用户不存在");
return res.redirect("/login");
}
if(user.password!==password){
req.flash("error","密码错误");
return res.redirect("/login");
}
req.flash("user",req.session.user=user);
req.flash('success',"登录成功");
res.redirect("/");
})
}); router.get('/logout',checkLogin);
router.get("/logout",function(req,res){
req.flash("user",req.session.user=null);
req.flash("success","登出成功");
res.redirect("/");
}); router.get('/post',checkLogin);
router.get('/post',function(req,res,next){
res.render('post', { title: '发表' });
}); router.post('/post',checkLogin);
router.post('/post',function(req,res,next){
}); function checkLogin(req,res,next){
if(!req.session.user){
req.flash("error","未登录");
return res.redirect("/login");
}
next();
} function checkNotLogin(req,res,next){
if(req.session.user){
req.flash("error","已登录");
return res.redirect("back");
}
next();
} module.exports = router;

使用express+mongoDB搭建多人博客 学习(5)权限控制的更多相关文章

  1. 使用express+mongoDB搭建多人博客 学习(6)发表文章

    发表文章 1.在modules文件夹下新建post.js var mongodb=require("./db"); function Post(name,title,post){ ...

  2. 使用express+mongoDB搭建多人博客 学习(3)connect-flash和mongodb,表单注册

    1.根目录下新建settings.js,存放数据库配置 module.exports={ cookieSecret:"myblog", db:"blog", h ...

  3. 使用express+mongoDB搭建多人博客 学习(2)路由与模板

    修改index.js路由规则: var express = require('express'); var router = express.Router(); /* GET home page. * ...

  4. 使用express+mongoDB搭建多人博客 学习(1) 安装blog工程

    一.安装 1.安装express npm install -g expressnpm install -g express-generator 2.用ejs做模板,新建blog工程express -e ...

  5. 使用express+mongoDB搭建多人博客 学习(4)登录与登出

    登录 修改index.ejs <%- include header %> <% if(locals.error){ %> <span><%= locals.e ...

  6. nodejs实战《一起学 Node.js》 使用 Express + MongoDB 搭建多人博客

    GitHub: https://github.com/nswbmw/N-blog N-blog 使用 Express + MongoDB 搭建多人博客 开发环境 Node.js: 6.9.1 Mong ...

  7. 2015年12月12 Node.js实战(一)使用Express+MongoDB搭建多人博客

    序,Node是基于V8引擎的服务器端脚本语言. 基础准备 Node.js: Express:本文用的是3.21.2版本,目前最新版本为4.13.3,Express4和Express3还是有较大区别,可 ...

  8. 第1章 Express MongoDB 搭建多人博客

    学习环境 Node.js : 0.10.22 + Express : 3.4.4 + MongoDB : 2.4.8 + 快速开始 安装 Express express 是 Node.js 上最流行的 ...

  9. 基于react全家桶+antd-design+webpack2+node+express+mongodb开发的前后台博客系统

    很久没更新博客,最近也有点忙,然后业余时间搞了一个比较完整基于react全家桶+antd-design+webpack2+node+express+mongodb开发的前后台博客系统的流程系统,希望对 ...

随机推荐

  1. HTML layout高仿QQ GUI

    1. [图片] QQ20130804162049.png ​2. [代码]AAuto 代码     import win.ui;import web.layout;/*DSG{{*/winform = ...

  2. html5--4-5 embed元素及其他

    html5--4-5 embed元素及其他 学习要点 掌握embed元素的使用 了解object元素的使用 温馨提示:关于video和audio的事件方法等涉及都JavaScript知识的内容,暂时不 ...

  3. DGA域名——可以每天只生成一个域名,因此最多存在365个 DGA域名;

    Mirai变种中的DGA 分享到: 发布时间:2016-12-12 16:02:57 作者:360网络安全研究院 投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿 那个导致美国断网 ...

  4. vue 使用scss报错

    vue-cli默认没有scss-loader,需要安装依赖:sass-loader  node-sass 安装之后重启就可以使用: <style lang="scss"> ...

  5. json : json数据解析(一)

    在项目中经常用到json格式的数据转换与解析,先前写过一些小例子,现在整理下,以备后用和帮助后来者. 言归正传: 使用到的jar包 :json-lib-2.4-jdk15.jar,当然你也可以用自己版 ...

  6. 【Hadoop】MapReduce笔记(一):MapReduce作业运行过程、任务执行

    一.MR作业运行过程 JobClient的runJob()方法:新建JobClient实例,并调用其submitJob()方法.提交作业后,runJob()每秒轮询作业进度,如果发现上次上报后信息有改 ...

  7. UVaLive 6853 Concert Tour (DP)

    题意:给定 n 个城市,m 个月,表示要在这 n 个城市连续 m 个月开演唱会,然后给定每个月在每个城市开演唱会能获得的利润,然后就是演唱会在不同城市之间调动所要的费用, 问你,怎么安排这 n 个演唱 ...

  8. PHP之操作数组

    https://www.jb51.net/Special/623.htm https://www.php.net/manual/zh/ref.array.php https://www.runoob. ...

  9. 萌新java入门笔记

    首先声明以下内容只是散乱笔记,如果有误还望大侠指出!不胜感激! 基本数据类型: 大体和C语言类似: boolean truth = true;//逻辑型 //文字型 char c; String st ...

  10. CodeForces717C 【数学】

    题意: 给你n个数既表示a类的值也表示b类的值,然后计算a和b类两两搭配相乘相加,使得答案最小: 思路: 显而易见的方案是最小乘最大,次小乘次大,然后依次下去.. 可以那个特例证明这个是对的 #inc ...