node + session登录验证

1.下载并引入

const cookieParse = require('cookie-parser');
const session = require('express-session');

设置session

app.use(session({
	secret: 'aaa',
	cookie: {maxAge: 60 * 1000},//设置有效期
	resave: true, //保存session值
	saveUninitialized: false //设置session cookie
}));

2.登录成功后写入session数据

node + session登录验证_第1张图片

// 登录
router.post('/login', (req, res) => {
	let  {us, ps} = req.body;
	if(!us || !ps) {
		return res.send({err:-1,msg:'参数错误'});
	} else {
		User.find({us, ps})
		.then((data) => {
			if(data.length > 0) {
				// 登录成功后把用户相关信息存入session
				req.session.login = true;
				req.session.name = us;

				res.send({err:0,msg:'登陆成功',token:token});
			} else {
				return res.send({err:-1,msg:'用户或密码错误'});
			}
		})
		.catch((err) => {
			res.send({err:-2,msg:'登陆失败'});
		})
	}
})

3. 在需要验证的接口(或中间件)中加入判断验证是否登录

node + session登录验证_第2张图片

app.use('/food',(req, res, next) => {
	// session验证
	// console.log(req.body);
	// console.log(req.session);
	if(req.session.login) {
		next();
	} else {
		res.send({err:-999,msg:'请先登录'});
	}
}, foodRouter);

4.退出登录

router.post('/logout', (req, res)=>{
	req.session.destory();
	res.send({err:0,msg:'已退出'});
})

 

你可能感兴趣的:(node)