登录

修改index.ejs

<%- include header %>
<% if(locals.error){ %>
<span><%= locals.error %></span>
<% } %>
<form method="post">
用户名:<input type="text" name="name"/><br/>
密码:<input type="password" name="password"/><br/>
<input type="submit" value="登录"/>
</form>
<%- include footer %>

修改index.js

router.post('/login',function(req,res,next){
var md5=crypto.createHash("md5");
password=md5.update(req.body.password).digest('hex');
console.log(req.body.name);
User.get(req.body.name,function(err,user){
if(!user){
req.flash('error',"用户不存在");
return res.redirect("/login");
}
console.log(user.password,password);
if(user.password!==password){
req.flash("error","密码错误");
return res.redirect("/login");
}
req.session.user=user;
req.flash('success',"登录成功");
res.redirect("/");
})
});

登出

index.js中修改:

router.get("/logout",function(req,res){
req.session.user=null;
req.flash("success","登出成功");
res.redirect("/");
});

现在登录后浏览器中输入:localhost:3000/logout

修改模板

login.ejs index.ejs 和req.ejs中都有

<% if(locals.xxx){ %>
<span><%= locals.xxx %></span>
<% } %>

这类的代码,删掉它们。

修改header.ejs如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Blog</title>
<link rel="stylesheet" href="/stylesheets/style.css">
</head>
<body>
<header>
<h1><%= title %></h1>
</header>
<nav>
<span><a title="主页" href="/">home</a></span>
<% if(locals.user){ %>
<span><a title="发表" href="/post">post</a></span>
<span><a title="登出" href="/logout">logout</a></span>
<% }else{ %>
<span><a title="登录" href="/login">login</a></span>
<span><a title="注册" href="/reg">register</a></span>
<% } %>
</nav>
<article>
<% if(locals.error){ %>
<span><%= locals.error %></span>
<% } %>
<% if(locals.success){ %>
<span><%= locals.success %></span>
<% } %>

修改index.js

router.post('/login',function(req,res,next){
var md5=crypto.createHash("md5");
password=md5.update(req.body.password).digest('hex');
console.log(req.body.name);
User.get(req.body.name,function(err,user){
if(!user){
req.flash('error',"用户不存在");
return res.redirect("/login");
}
console.log(user.password,password);
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",function(req,res){
req.flash("user",req.session.user=null);
req.flash("success","登出成功");
res.redirect("/");
});

修改app.js

app.use(function(req, res, next) {
res.locals.error = req.flash('error').toString();
res.locals.success = req.flash('success').toString();
res.locals.user=req.flash("user")[0];
next();
});

使用express+mongoDB搭建多人博客 学习(4)登录与登出的更多相关文章

  1. 使用express+mongoDB搭建多人博客 学习(5)权限控制

    修改index.js如下: var express = require('express'); var router = express.Router(); var crypto=require('c ...

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

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

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

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

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

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

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

    一.安装 1.安装express npm install -g expressnpm install -g express-generator 2.用ejs做模板,新建blog工程express -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. BestCoder10 1001 Revenge of Fibonacci(hdu 5018) 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5018 题目意思:给出在 new Fibonacci 中最先的两个数 A 和 B(也就是f[1] = A ...

  2. python学习笔记:第二天(运算符)

    Python3 运算符 注:以下部分示例源自于http://www.runoob.com/ 1.算术运算符 假设变量a为10,变量b为20: 运算符 描述 实例 + 加 - 两个对象相加 a + b ...

  3. Loadrunner进行性能测试的步骤

    Loadrunner 11是一款免费的性能测试工具,他包含三个大模块 •使用VuGen:创建脚本•运用Controller:设置方案•查看Analysis:分析测试结果 结合软件测试的流程可以知道使用 ...

  4. hdu-5665 Lucky(水题)

    题目链接: Lucky Time Limit: 2000/1000 MS (Java/Others)     Memory Limit: 65536/65536 K (Java/Others) Pro ...

  5. PS基本操作

    1 安装 赢政天下2015大师版 安装失败, 删除一下文件夹再重新安装 2 工作界面 2.1 界面 菜单栏; 标题栏; 工具箱; 工具箱选项栏; 面板; 状态栏; 文档窗口; 选项卡 2.2 文档窗口 ...

  6. 更换ubuntu apt-get源

    原文地址:http://www.cnblogs.com/zhangpengshou/p/3591387.html 为了优化ubuntu软件安装/更新速度,我测试了国内几家apt源的速度,发现北京交大的 ...

  7. python装饰器执行顺序

    . python 装饰器 1) 2层装饰器 def decorator(func): # TODO def wrapper(*args, **kwargs): # TODO func(*args, * ...

  8. SNE降维与可视化

    from sklearn import datasets digits = datasets.load_digits(n_class=5) X = digits.data y = digits.tar ...

  9. vue-touchjs

    支持vue2.0的面向指令的touch指令,基于touchjs(原百度实现的移动端手势库) vue-touchjs支持三种stopPropagation的方式: 1 .stop修饰符 2  事件han ...

  10. Java中的双重检查(Double-Check)详解

    在 Effecitve Java 一书的第 48 条中提到了双重检查模式,并指出这种模式在 Java 中通常并不适用.该模式的结构如下所示: ? 1 2 3 4 5 6 7 8 9 10 public ...