zoukankan      html  css  js  c++  java
  • 使用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();
    });

  • 相关阅读:
    Sqlite基础(一)
    个人作业冲刺(四)
    安卓用户名密码操作及虚拟机问题
    安卓之界面跳转
    个人作业冲刺(三)
    个人作业冲刺(二)
    个人作业冲刺(一)
    Android studio RatingBar(星级评分条)
    阅读笔记——《构建之法》4
    Android studio GridLayout(网格布局)
  • 原文地址:https://www.cnblogs.com/qianlegeqian/p/4252154.html
Copyright © 2011-2022 走看看