使用express+mongoDB搭建多人博客 学习(4)登录与登出
登录
修改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)登录与登出的更多相关文章
- 使用express+mongoDB搭建多人博客 学习(5)权限控制
修改index.js如下: var express = require('express'); var router = express.Router(); var crypto=require('c ...
- 使用express+mongoDB搭建多人博客 学习(6)发表文章
发表文章 1.在modules文件夹下新建post.js var mongodb=require("./db"); function Post(name,title,post){ ...
- 使用express+mongoDB搭建多人博客 学习(3)connect-flash和mongodb,表单注册
1.根目录下新建settings.js,存放数据库配置 module.exports={ cookieSecret:"myblog", db:"blog", h ...
- 使用express+mongoDB搭建多人博客 学习(2)路由与模板
修改index.js路由规则: var express = require('express'); var router = express.Router(); /* GET home page. * ...
- 使用express+mongoDB搭建多人博客 学习(1) 安装blog工程
一.安装 1.安装express npm install -g expressnpm install -g express-generator 2.用ejs做模板,新建blog工程express -e ...
- nodejs实战《一起学 Node.js》 使用 Express + MongoDB 搭建多人博客
GitHub: https://github.com/nswbmw/N-blog N-blog 使用 Express + MongoDB 搭建多人博客 开发环境 Node.js: 6.9.1 Mong ...
- 2015年12月12 Node.js实战(一)使用Express+MongoDB搭建多人博客
序,Node是基于V8引擎的服务器端脚本语言. 基础准备 Node.js: Express:本文用的是3.21.2版本,目前最新版本为4.13.3,Express4和Express3还是有较大区别,可 ...
- 第1章 Express MongoDB 搭建多人博客
学习环境 Node.js : 0.10.22 + Express : 3.4.4 + MongoDB : 2.4.8 + 快速开始 安装 Express express 是 Node.js 上最流行的 ...
- 基于react全家桶+antd-design+webpack2+node+express+mongodb开发的前后台博客系统
很久没更新博客,最近也有点忙,然后业余时间搞了一个比较完整基于react全家桶+antd-design+webpack2+node+express+mongodb开发的前后台博客系统的流程系统,希望对 ...
随机推荐
- 分布式session之token解决方案实现
基于令牌(Token)方式实现Session解决方案,因为Session本身就是分布式共享连接 用token代替session 废话不多说,看项目: pom.xml <project xmlns ...
- ArcGIS发布动态空间,并验证
发布 发布方法见视频. 验证 发布动态空间后,页面底部有 点进去后,使用如下语法验证. {"id": 0,"source": {"type" ...
- 使用libcurl进行HTTP GET操作
Working example how to do a GET request with libcurl and save it to a string variable for future use ...
- Mybatis一二级缓存的理解
频繁的数据库操作是非常耗费性能的(主要是因为对于DB而言,数据是持久化在磁盘中的,因此查询操作需要通过IO,IO操作速度相比内存操作速度慢了好几个量级),尤其是对于一些相同的查询语句,完全可以 ...
- APIO2015巴厘岛的雕塑——数位DP
题目:https://www.luogu.org/problemnew/show/P3646 对于A>1,将答案各位全置1,然后从高位到低位改成0判断是否可行: 用f[i][j]数组代表前i个数 ...
- bzoj2159
树形dp+第二类斯特林数 又是这种形式,只不过这次不用伯努利数了 直接搞肯定不行,我们化简一下式子,考虑x^n的组合意义,是把n个物品放到x个箱子里的方案数.那么就等于这个i=1->n,sigm ...
- 通过上一节部署出来的 Windows instance 有时候会发现操作系统时间总是慢 8 个小时,即使手工调整好时间和时区,下次 instance 重启后又会差 8 个小时
这是 OpenStack 实施经验分享系列的第 3 篇. 问题描述 通过上一节部署出来的 Windows instance 有时候会发现操作系统时间总是慢 8 个小时,即使手工调整好时间和时区,下次 ...
- JAVA 数组的常用操作
目录: 声明数组: 初始化数组: 查看数组长度: 遍历数组: int数组转成string数组: 从array中创建arraylist: 数组中是否包含某一个值: 将数组转成set集合: 将数组转成li ...
- ElasticSearch基础之批量操作(mget+mbulk)
在前面的演示中,我们都是基于一次http查询,每次查询都要建立http的三次握手请求,这样比较耗费性能!因此ES给我们提供了基本的批量查询功能,例如如下的查询,注意里面的index是可以任意指明的 ...
- 20个Flutter实例视频教程-第15节: 贝塞尔曲线切割
博客地址: https://jspang.com/post/flutterDemo.html#toc-61b 视频地址: https://www.bilibili.com/video/av397092 ...