【发布时间】:2011-01-25 05:25:46
【问题描述】:
我似乎在任何地方都找不到它...如何在 Rails 中删除/销毁/重置/清空/清除用户的会话?不仅仅是一个价值,而是整个事情..
【问题讨论】:
标签: ruby-on-rails session session-variables session-timeout
我似乎在任何地方都找不到它...如何在 Rails 中删除/销毁/重置/清空/清除用户的会话?不仅仅是一个价值,而是整个事情..
【问题讨论】:
标签: ruby-on-rails session session-variables session-timeout
要清除整个事情,请使用控制器中的 reset_session 方法。
reset_session
这是有关此方法的文档:http://api.rubyonrails.org/classes/ActionController/Base.html#M000668
通过清除所有来重置会话 存储在其中的对象和 初始化一个新的会话对象。
祝你好运!
【讨论】:
rails 中的会话是一个哈希对象。因此,任何可用于清除哈希的函数都适用于会话。
session.clear
或 如果必须销毁特定的密钥:
session.delete(key)
在 Rails 3.2 中测试
添加
session={} 提到的人们是个坏主意。关于session.clear,Lobati cmets- 看起来你可能最好使用reset_session [比session.clear],因为它会做一些超出session.clear 的其他清理工作。在内部,reset_session calls session.destroy、which itself calls clear as well some other stuff.
【讨论】:
reset_session,因为它除了session.clear 之外还有其他一些清理功能。在内部,reset_session calls session.destroy,其中itself calls clear as well some other stuff。
要仅清除某些参数,您可以使用:
[:param1, :param2, :param3].each { |k| session.delete(k) }
【讨论】:
删除用户的会话
session.delete(:user_id)
【讨论】:
将此代码添加到您的 ApplicationController
def reset_session
@_request.reset_session
end
( 不知道为什么上面没有人只提到这段代码 因为它解决了我的问题) http://apidock.com/rails/ActionController/RackDelegation/reset_session
【讨论】:
@_request.reset_session 和reset_session 都可以工作并且可能做同样的事情?