Ứng dụng Rails của tôi có hộp đăng nhập với hộp kiểm "nhớ thông tin đăng nhập của tôi". Người dùng kiểm tra hộp đó sẽ vẫn đăng nhập ngay cả sau khi đóng trình duyệt của họ. Tôi đang theo dõi xem liệu người dùng có đăng nhập hay không bằng cách lưu trữ id của họ trong phiên của người dùng.Thực hiện "Ghi nhớ tôi" trong ứng dụng Rails
Nhưng phiên được triển khai trong Rails dưới dạng cookie phiên, không liên tục. Tôi có thể làm họ dai dẳng:
class ApplicationController < ActionController::Base
before_filter :update_session_expiration_date
private
def update_session_expiration_date
options = ActionController::Base.session_options
unless options[:session_expires]
options[:session_expires] = 1.year.from_now
end
end
end
Nhưng điều đó có vẻ như một hack, mà là đáng ngạc nhiên cho các chức năng thông thường như vậy. Có cách nào tốt hơn không?
Sửa
câu trả lời Gareth là khá tốt, nhưng tôi sẽ vẫn giống như một câu trả lời từ một người quen thuộc với Rails 2 (vì nó là duy nhất CookieSessionStore
).
theo mặc định Các cookie phiên Rails chỉ là phiên trình duyệt và do đó cookie sẽ bị xóa khi đóng trình duyệt. Làm cách nào để bạn thực hiện bước một trong giải pháp của mình và bạn đang sử dụng phiên bản Rails nào? "Cookie phiên được đặt lâu dài (6 tháng hoặc lâu hơn)" – Nick
Tôi đã thay đổi các giá trị mặc định để làm cho cookie phiên không phải là "chỉ phiên trình duyệt". Câu trả lời này được hình thành cách đây 4 năm và cấu hình/mặc định có thể không áp dụng cho các phiên bản Rails mới hơn. –