1. 程式人生 > >Cookies模組記錄當前的登入狀態

Cookies模組記錄當前的登入狀態

首先 在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; }) });