Tôi dường như không thể tìm thấy ở bất cứ đâu ... Làm cách nào để xóa/hủy/đặt lại/trống/xóa phiên của người dùng trong Rails? Không chỉ là một giá trị mà là toàn bộ ..Làm thế nào để trống/hủy một phiên trong đường ray?
Trả lời
Để xóa toàn bộ điều, hãy sử dụng phương pháp reset_session trong bộ điều khiển.
reset_session
Dưới đây là các tài liệu về phương pháp này: http://api.rubyonrails.org/classes/ActionController/Base.html#M000668
Resets phiên bằng cách xóa bỏ tất cả các đối tượng được lưu trữ trong và khởi tạo một đối tượng session mới.
Chúc may mắn!
phiên trong đường ray là đối tượng băm. Do đó, bất kỳ hàm nào có sẵn để xóa băm sẽ hoạt động với các phiên.
session.clear
hoặc nếu phím cụ thể phải bị tiêu diệt:
session.delete(key)
Tested trong đường ray 3.2
Bất kỳ ai có bất kỳ suy nghĩ nào về thành tích của phương pháp này so với phương pháp được đề xuất bởi Gdeglin? –
Điều này có thể được sử dụng khi bạn muốn giữ lại các thông số khác nhưng xóa một cặp giá trị khóa cụ thể. – Lavixu
Tôi cho rằng tôi đang đề cập đến việc sử dụng 'session.clear' hoặc' session = {} 'so với việc sử dụng' reset_session'. Họ có giống nhau không? –
Để xóa chỉ số nhất định, bạn có thể sử dụng:
[:param1, :param2, :param3].each { |k| session.delete(k) }
để xóa phiên của người dùng
session.delete(:user_id)
Cẩn thận, bạn có thể xóa bản ghi người dùng khỏi cơ sở dữ liệu! – Arthur
@Arthur Điều đó không đúng. Nhưng bạn sẽ chỉ xóa khóa: user_id khỏi phiên chứ không phải toàn bộ phiên –
thêm mã này vào ApplicationController bạn
def reset_session
@_request.reset_session
end
(Dont biết tại sao không có ai ở trên chỉ đề cập đến mã này vì nó cố định vấn đề của tôi) http://apidock.com/rails/ActionController/RackDelegation/reset_session
Chỉ một phiên làm việc cho tôi. – amingilani
Đối với phiên cơ sở dữ liệu dựa trên (mà bạn nên có thể sử dụng) bạn có thể hết hạn thông qua truy vấn: http://guides.rubyonrails.org/security.html#session-expiry – m33lky