zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    总结:工作 + 学习 (2019年)
    JVM 理解性学习(一)
    渗透神器cobalt strike在数字杀软环境下的使用
    普通路由器刷开源固件DD-WRT的简单过程
    云烟渗透题总结
    对thinkphp5.0框架的实例学习
    内网渗透 关于GPO
    简单尝试利用维控LeviStudioU的一栈缓冲区溢出漏洞
    试写foxit reader的ConvertToPDF功能的wrapper
    第05章下 加载内核
  • 原文地址:https://www.cnblogs.com/jiguiyan/p/11428351.html
Copyright © 2011-2022 走看看