標籤:
登入
修改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").toString(); next();});
使用express+mongoDB搭建多人部落格 學習(4)登入與登出