2010-03-08 22 views

Trả lời

178

Để 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!

+1

Đố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

36

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

+0

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? –

+2

Đ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

+0

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? –

5

Để xóa chỉ số nhất định, bạn có thể sử dụng:

[:param1, :param2, :param3].each { |k| session.delete(k) } 
5

để xóa phiên của người dùng

session.delete(:user_id) 
+0

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

+0

@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 –

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