Node.js Express博客项目实战 之 后台登录退出功能

登录后台

需要监听用户的访问地址,只有管理员才能登录后台

在后台的路由admin.js:

// 监听用户的访问地址,只有管理员能登录后台

router.use(function(req,res,next){
    // 判断url地址
    // 是否可以直接进行访问
    if (req.url != "/login" && req.url != "/check") {
        // 判断是否登录
        if (req.session.YzmMessageIsAdmin && req.session.YzmMessageUsername) {
            next();
        }else{
            res.send("<script>alert('请登录');location.href='/admin/login'</script>");
        }
    }else{
        next();
    }
});
// 登录页面
router.get("/login",function(req,res,next){
    res.render("admin/login.html");
});

登录页面:

进行处理登录的操作:

// 登录处理操作
router.post("/check",function(req,res,next){
    // 接受数据

    let {username,password} = req.body;
    username+=""

    // 判断
    if (username) {
        if (password) {
            // 密码加密
            let md5 = crypto.createHash('md5');
            password = md5.update(password).digest('hex');

            // 判断数据库中是否存在该用户
            mysql.query("select * from admin where username = ? and password = ? and status = 0",[username,password],function(err,data){
                
                if (err) {
                    return ""
                }else{

                    if (data.length) {
                        req.session.YzmMessageIsAdmin = true;
                        req.session.YzmMessageUsername = data[0].username;
                        res.send("<script>alert('登录成功');location.href='/admin/'</script>");

                    }else{
                        res.send("<script>alert('登录失败');location.href='/admin/login'</script>");
                    }
                }
            });
        }else{
            res.send("<script>alert('请登录');location.href='/admin/login'</script>");
        }
    }else{
        res.send("<script>alert('请登录');location.href='/admin/login'</script>");
    }
})

 登录的效果如下:

 

退出后台登录:

当点击

在后台路由中写入

// 退出路由
router.get("/logout",function(req,res,next){
    req.session.YzmMessageIsAdmin = false;
    req.session.YzmMessageUsername = "";
    res.send("<script>alert('退出成功');location.href='/admin/login'</script>");

});
在后台首页写入logout:
<a class="button button-little bg-red" href="/admin/logout"><span class="icon-power-off"></span> 退出登录</a> 

最终实现的效果图:

 整个后台的路由:

  1 //导入express
  2 
  3 let express=require("express");
  4 
  5 
  6 //实例化
  7 
  8 let router=express.Router();
  9 const crypto = require('crypto');
 10 const mysql = require("../config/db.js");
 11 
 12 
 13 // 监听用户的访问地址,只有管理员能登录后台
 14 
 15 router.use(function(req,res,next){
 16     // 判断url地址
 17     // 是否可以直接进行访问
 18     if (req.url != "/login" && req.url != "/check") {
 19         // 判断是否登录
 20         if (req.session.YzmMessageIsAdmin && req.session.YzmMessageUsername) {
 21             next();
 22         }else{
 23             res.send("<script>alert('请登录');location.href='/admin/login'</script>");
 24         }
 25     }else{
 26         next();
 27     }
 28 });
 29 // 登录页面
 30 router.get("/login",function(req,res,next){
 31     res.render("admin/login.html");
 32 });
 33 
 34 
 35 
 36 // 登录处理操作
 37 router.post("/check",function(req,res,next){
 38     // 接受数据
 39 
 40     let {username,password} = req.body;
 41     username+=""
 42 
 43     // 判断
 44     if (username) {
 45         if (password) {
 46             // 密码加密
 47             let md5 = crypto.createHash('md5');
 48             password = md5.update(password).digest('hex');
 49 
 50             // 判断数据库中是否存在该用户
 51             mysql.query("select * from admin where username = ? and password = ? and status = 0",[username,password],function(err,data){
 52                 
 53                 if (err) {
 54                     return ""
 55                 }else{
 56 
 57                     if (data.length) {
 58                         req.session.YzmMessageIsAdmin = true;
 59                         req.session.YzmMessageUsername = data[0].username;
 60                         res.send("<script>alert('登录成功');location.href='/admin/'</script>");
 61 
 62                     }else{
 63                         res.send("<script>alert('登录失败');location.href='/admin/login'</script>");
 64                     }
 65                 }
 66             });
 67         }else{
 68             res.send("<script>alert('请登录');location.href='/admin/login'</script>");
 69         }
 70     }else{
 71         res.send("<script>alert('请登录');location.href='/admin/login'</script>");
 72     }
 73 })
 74 
 75 
 76 // 退出路由
 77 router.get("/logout",function(req,res,next){
 78     req.session.YzmMessageIsAdmin = false;
 79     req.session.YzmMessageUsername = "";
 80     res.send("<script>alert('退出成功');location.href='/admin/login'</script>");
 81 
 82 });
 83 
 84 
 85 
 86 //后台首页路由
 87 
 88 router.get('/',function(req,res,next){
 89     
 90     //加载对应的后台页面
 91     res.render("admin/index");
 92     
 93 });
 94 
 95 //后台欢迎页面
 96 
 97 router.get('/welcome',function(req,res,next){
 98     
 99     
100     //加载对应的后台欢迎页面
101     res.render("admin/welcome");
102     
103     
104     
105 })
106 
107 
108 //管理员管理,导入管理员管理的路由
109 
110 let adminRouter=require('./admin/admin');
111 
112 router.use('/admin',adminRouter);
113 
114 //会员管理
115 
116 let userRouter=require('./admin/user');
117 
118 router.use('/user',userRouter);
119 
120 
121 
122 //栏目管理
123 
124 
125 
126 //轮播图管理
127 let sliderRouter=require('./admin/slider');
128 
129 router.use('/slider',sliderRouter);
130 
131 
132 
133 // 新闻分类管理
134 let typeRouter = require('./admin/newtype.js');
135 router.use('/type',typeRouter);
136 
137 // 新闻管理
138 let newsRouter = require('./admin/news.js');
139 router.use('/news',newsRouter);
140 
141 // 评论管理
142 let commentRouter = require('./admin/comment.js');
143 router.use('/comment',commentRouter);
144 
145 
146 
147 // 系统管理
148 let systemRouter = require('./admin/system');
149 router.use('/system',systemRouter);
150 
151 
152 module.exports=router;
admin.js
原文地址:https://www.cnblogs.com/jiguiyan/p/11428351.html