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;
以上是关于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