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

  • 相关阅读:
    快学Java NIO
    GoldenGate 12.3 MA架构介绍系列(4)–Restful API介绍
    GoldenGate 12.3 MA架构介绍系列(3)
    GoldenGate实时投递数据到大数据平台(1)-MongoDB
    GoldenGate 12.3 MA架构介绍系列(2)
    GoldenGate 12.3 MA架构介绍系列(1)
    关于集成抽取进程重启后的现象分析
    GoldenGate Logdump基本使用
    76 道 Oracle Goldengate 面试问题
    ogg 12.3 中 format release的变化
  • 原文地址:https://www.cnblogs.com/qianlegeqian/p/4252154.html
Copyright © 2020-2023  润新知