2013-10-25 6 views
7

अनुरोधों के भीतर कुकीज़ सेट नहीं किया जा सकता है।एक्सप्रेसजेएस सेट/प्राप्त/कुकीज़ का उपयोग करें

मैं

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

गायन को तब कहा जाता है जब उपयोगकर्ता अपने मुख्य और पासवर्ड के साथ गाता है। किसी उपयोगकर्ता के सभी डेटा प्राप्त करते समय खाते का उपयोग किया जाता है। – 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 
}); 
संबंधित मुद्दे