1. 使用cookie保存用户登录状态
//引入cookie模块
var Cookies = require("cookies");
/*
设置cookies
*/
app.use(function(req, res, next){
req.cookies = new Cookies(req, res);
//打印cookie
//console.log(req.cookies.get("userInfo"));
/*
因为在各个路由中都需要判断用户是否登录,所以我们将数据挂载在req上
解析登录用户的cookie信息
*/
req.userInfo = {};
if(req.cookies.get("userInfo")){
try{
req.userInfo = JSON.parse(req.cookies.get("userInfo"));
}catch(err){
console.log(err);
}
}
next();
})
//登录成功后,将数据发给前端页面,并且设置cookie
//用户名和密码正确
responseData.message = "登录成功";
//将登录信息返回前端页面
responseData.userInfo = {
_id: userInfo._id,
username: userInfo.username
}
//发送cookies给前端页面
req.cookies.set("userInfo", JSON.stringify({
_id: userInfo._id,
username: userInfo.username
}))
res.json(responseData);
return;
//在routers/main.js中将各个数据分配给各个模板
var express = require("express");
var router = express.Router();
//这里不需要些/admin/user,因为前面已经处理过了
router.get("/", function(req, res, next){
// res.send("首页");
//加载index.html
console.log(req.userInfo._id)
//在这里将用户数据分配给各个模板
res.render("main/index", {
userInfo: req.userInfo
});
})
module.exports = router;
//现在可以在前端页面views/main/index.html中编写判断逻辑
/*{% if userInfo._id %}
{% else %}
{% endif %}*/
//我们在 public/js/index.js处理退出按钮的逻辑
//退出
$("#logoutBtn").on("click", function(){
$.ajax({
url: "/api/user/logout",
success: function(result){
if(!result.code){
//重载页面
window.location.reload();
}
},
error: function(err){
console.log("退出错误:" + err);
}
})
})
//编写点击退出按钮以后的路由操作 routers/api.js
/*
退出
*/
router.get("/user/logout", function(req, res){
//将cookie清除掉
req.cookies.set("userInfo", null);
res.json(responseData);
})