nodejs

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);
})

你可能感兴趣的:(nodejs)