2013-01-05 34 views
6

Tôi đã cố gắng đặt ngày hết hạn của cookie trong Node.js bằng Express 3.0, nhưng không có gì hoạt động.Không thể đặt cookie 'hết hạn' hoặc 'maxAge' trong Node.js bằng Express 3.0

nỗ lực đầu tiên của tôi:

res.cookie('user', user, { maxAge: 9000, httpOnly: true }); 

Chỉ cần kết thúc bằng một cookie mà có một thời gian hết hạn hợp lệ theo Chrome. Sau đó, tôi đã cố gắng đặt 'hết hạn' thay thế, như vậy:

res.cookie('user', user, { expires: new Date(new Date().getTime()+5*60*1000), httpOnly: true }); 

Và bây giờ cookie của tôi chỉ là cookie phiên.

Có ai biết cách sửa lỗi này không?

+0

Cảm ơn đã đặt câu hỏi này. câu hỏi của bạn cùng với liên kết này đưa tôi đến một giải pháp mà tôi đang tìm kiếm: http://stackoverflow.com/questions/16209145/how-to-set-cookie-in-node-js-using-express-framework – jmunsch

Trả lời

3

Bạn phải sử dụng req.session.cookie:

req.session.cookie.expires = false; 

req.session.cookie.maxAge = 5 * 60 * 1000; 

Xem thêm connect docs.

+0

Hóa ra : nó thực sự hoạt động. Chrome chỉ nói định dạng thời gian là sai, nhưng nó vẫn tôn vinh nó. – skerit

+0

Bạn nói res.session, sau đó đưa ra một ví dụ với req.ession ... Sau đó, sau khi chấp nhận câu trả lời người hỏi ban đầu nói rằng 'nó' đã làm việc .... Làm thế nào chúng ta không may mắn nhân viên của Google với cùng một câu hỏi phải nhận được bất kỳ sự giúp đỡ nào từ đây? – Spork

2

Câu trả lời được chấp nhận không hoạt động đối với tôi .. nhưng câu hỏi ban đầu có phiên bản hoạt động. Ví dụ

var language = 'en'; 
//10 * 365 * 24 * 60 * 60 * 1000 === 315360000000, or 10 years in milliseconds 
var expiryDate = new Date(Number(new Date()) + 315360000000); 
this.__res.cookie('lang', language, { expires: expiryDate, httpOnly: true }); 
0

Do lưu ý rằng maxAge là trong milliseconds-

res.cookie('jwtToken', token, { maxAge: 2 * 60 * 60 * 1000, httpOnly: true }); // maxAge: 2 hours 
Các vấn đề liên quan