使用express+mongoDB搭建多人部落格 學習(4)登入與登出

來源:互聯網
上載者:User

標籤:

登入

修改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)登入與登出

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.