使用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(); });

hi,我的新博客地址:ysha.me !!
浙公网安备 33010602011771号