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數據

// 登錄
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. 在需要驗證的接口(或中間件)中加入判斷驗證是否登錄

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:'已退出'});
})

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章