2013-10-25 4 views
7

요청 내에서 설정된 쿠키를 가져올 수 없습니다.ExpressJS 쿠키 설정/가져 오기/사용

나는

response.cookie('name', 'My name'); 
내 쿠키이 방법을 좀하고 싶습니다

내 쿠키를 설정하고, 전에 근무하지만 명시 적 구성을 변경하고, 지금은 문제가 될 것으로 보인다 모르겠어요 .

request.cookies is and empty Object 

내 특급 구성 :

var express = require('express'), 
    api = require('./routes/api'); 

var app = express(); 

app.configure(function() { 
    app.set('port', process.env.PORT || 3000); 
    app.use(express.favicon()); 
    app.use(express.logger('dev')); 
    app.use(express.json()); 
    //app.use(express.bodyParser()); 
    app.use(express.compress()); // New call to compress content 
    app.use(express.cookieParser()); 
    app.use(express.session({secret: 'secret'})); 
    app.use(app.router); 
    app.use(express.methodOverride()); 
    //app.use(express.static(__dirname + '/public')); 
}); 

app.all('*', function(req, res, next) { 
    res.header("Access-Control-Allow-Origin", "*"); 
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE'); 
    res.header("Access-Control-Allow-Headers", "X-Requested-With, Content-Type"); 
    next(); 
}); 

app.configure('development', function() { 
    app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); 
}); 

app.configure('production', function() { 
    app.use(express.errorHandler()); 
}); 

쿠키 설정 :

exports.singIn = function (req, res) { 
    var mail = req.query.mail, 
     password = req.query.password; 

    return user.find({ 
     mail: mail 
    }).then(function (d) { 
     var user = usersData(u); 

     res.cookie('mail', user.mail, { maxAge: 900000}); 
     res.cookie('password', crypted, { maxAge: 900000}); 
     res.json({ user: user }); 
     return { user: user } 
    }).catch(function() { 
     res.json(400, {"error-tag": "error-sing-in"}); 
     return {"error-tag": "error-sing-in"}; 
    }); 
}; 

쿠키를 얻기 :

exports.account = function (req, res) { 
    var mail = req.cookies.mail, 
     password = req.cookies.password; 
    //here req.cookies is an empty object. I don't know why? 
}; 
+2

어떻게/어디' "singIn'"을 요구하고있다? –

+0

쿠키 미들웨어를 사용해야한다고 생각합니다. http://stackoverflow.com/a/18510185/446681 –

+0

singIn은 사용자가 주 암호와 함께 노래 부를 때 호출됩니다. 계정은 사용자의 모든 데이터를 가져올 때 사용됩니다. – puppeteer701

답변

3

2017에 대한 답 ..

const cookieParser = require('cookie-parser'); 
const express = require('express'); 
const app = express(); 
app.use(cookieParser()); 
는 ..
let cookie = req.cookies['cookiename']; 

(이 쿠키가 삭제 또는 만료 될 때까지 이후의 모든 수신 요청에 전송됩니다) 응답 쿠키를 설정 .. 들어오는 요청에서 쿠키를 얻을 수

res.cookie('cookiename', 'cookievalue', { 
    maxAge: 86400 * 1000, // 24 hours 
    httpOnly: true, // http only, prevents JavaScript cookie access 
    secure: true // cookie must be sent over https/ssl 
}); 
응답 쿠키를 삭제하는

..

res.cookie('cookiename', 'cookievalue', { 
    maxAge: 0 
});