2013-07-17 59 views
5

Tôi đang cố gắng triển khai chức năng "nhớ tôi" cho biểu mẫu đăng nhập của mình. Làm thế nào để hầu hết các trang web làm điều này? Tôi giả sử hầu hết các trang web tự động thay đổi thời gian hết hạn của cookie phiên hoặc trường độ tuổi tối đa khi hộp kiểm được chọn.Làm cách nào để tự động đặt cookie hết hạn/maxAge trong Express/Node.js?

Vì vậy, làm cách nào để thay đổi thời lượng cookie cuối cùng sẽ tự động phụ thuộc vào việc hộp kiểm Nhớ tôi có được chọn không?

Cho đến nay tôi có:

if (req.body.remember) 
{ 
    var thirtyDays = 30*24*60*60*1000; 
    req.session.cookie.expires = new Date(Date.now() + thirtyDays); 
    req.session.cookie.maxAge = thirtyDays; 
} 
else 
{ 
    req.session.cookie.expires = false; 
    req.session.cookie.maxAge = false; 
} 

console.log(req.session.cookie.expires, req.session.cookie.maxAge) 

này hoạt động. Nhưng tôi không thể chọn không phải để ghi nhớ tôi; vì một lý do nào đó cookie tồn tại mãi mãi. Ngay cả sau khi tôi xóa cookie (trong chrome) và đăng nhập mà không nhớ trường tôi đã kiểm tra, nó vẫn tồn tại khi tôi đóng phiên của trình duyệt, mặc dù nó nói trong bảng điều khiển cookie trong thanh tra web là Session và console.log đang cho tôi 'sai, sai'.

Tôi rõ ràng đang làm điều gì đó sai. Làm thế nào để tôi làm điều đó đúng không?

Cảm ơn trước! :)

Chỉnh sửa

Có vẻ như mã ở trên đang hoạt động. Lý do tại sao nó xuất hiện như thể nó không hoạt động là vì tôi có tùy chọn để mở lại các tab trình duyệt khi khởi động lại Chrome. Điều này khiến Chrome không bao giờ xóa cookie phiên trình duyệt và khiến tôi nghĩ rằng việc đặt cookie hết hạn thành sai sẽ không làm cho cookie của trình duyệt của họ bị phiên.

Trả lời

3

Theo HTTP cookie's Expires and Max-Age directives, ngày của Cookie expires thể được thiết lập đến thời điểm kỷ nguyên (hoặc một ngày sớm hơn so với bây giờ) và maxAge 0:

req.session.cookie.expires = new Date(0); 
req.session.cookie.maxAge = 0; 
+0

Thay vì đặt chúng vào sai? – Sam

+0

Yah, thời gian hết hạn của cookie được cho là ngày và maxAge một số. – yuxhuang

+1

Hóa ra điều này làm cho cookie hết hạn ngay lập tức. Đó không phải là điều tôi muốn. Tôi muốn cookie hết hạn ngay sau khi phiên trình duyệt kết thúc. Tôi phải đặt các trường để làm điều đó? – Sam

Các vấn đề liên quan