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

Posted jiguiyan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

以上是关于Node.js Express博客项目实战 之 后台登录退出功能的主要内容,如果未能解决你的问题,请参考以下文章

夺命雷公狗---node.js---21之项目的构建在node+express+mongo的博客项目6之数据的遍历

夺命雷公狗---node.js---22之项目的构建在node+express+mongo的博客项目7之数据的修改

夺命雷公狗---node.js---17之项目的构建在node+express+mongo的博客项目2之一,二级路由

夺命雷公狗---node.js---16之项目的构建在node+express+mongo的博客项目1

Node.js+Vue+mysql项目实战入门之环境搭建,项目创建-附github地址

Node.js+Vue+mysql项目实战入门之环境搭建,项目创建-附github地址