Cookies模組記錄當前的登入狀態
阿新 • • 發佈:2019-02-20
首先 在app.js中
//載入cookies模組 var Cookies = require('cookies');
再對cookies進行相關設定
//設定cookie app.use( function(req, res, next) { req.cookies = new Cookies(req, res); //解析登入使用者的cookie資訊 req.userInfo = {}; if (req.cookies.get('userInfo')) { try { req.userInfo = JSON.parse(req.cookies.get('userInfo')); //獲取當前登入使用者的型別,是否是管理員 User.findById(req.userInfo._id).then(function(userInfo) { req.userInfo.isAdmin = Boolean(userInfo.isAdmin); next(); }) }catch(e){ next(); } } else { next(); } } );
在api.js下的cookies的操作:
/* * 登入* */ router.post('/user/login', function(req, res) { var username = req.body.username; var password = req.body.password; if ( username == '' || password == '' ) { responseData.code = 1; responseData.message = '使用者名稱和密碼不能為空'; res.json(responseData); return; } //查詢資料庫中相同使用者名稱和密碼的記錄是否存在,如果存在則登入成功 User.findOne({ username: username, password: password }).then(function(userInfo) { if (!userInfo) { responseData.code = 2; responseData.message = '使用者名稱或密碼錯誤'; res.json(responseData); return; } //使用者名稱和密碼是正確的 responseData.message = '登入成功'; responseData.userInfo = { _id: userInfo._id, username: userInfo.username } req.cookies.set('userInfo', JSON.stringify({ _id: userInfo._id, username: userInfo.username })); res.json(responseData); return; }) });