142

我似乎在任何地方都找不到它...如何在 Rails 中删除/销毁/重置/清空/清除用户的会话?不仅仅是一个价值,而是整个事情..

4

5 回答 5

214

要清除整个事情,请使用控制器中的 reset_session 方法。

reset_session

这是有关此方法的文档:http: //api.rubyonrails.org/classes/ActionController/Base.html#M000668

通过清除存储在其中的所有对象并初始化新的会话对象来重置会话。

祝你好运!

于 2010-03-09T00:06:58.670 回答
48

rails 中的 session 是一个哈希对象。因此,任何可用于清除哈希的函数都适用于会话。

session.clear

或者如果必须销毁特定的密钥:

session.delete(key)

在rails 3.2中测试

添加

人们提到的session={}是一个坏主意。关于session.clear, Lobati 评论 - 看起来你可能最好使用 reset_session [比 session.clear],因为它会做一些超出 session.clear 所做的其他清理工作。在内部, reset_session 调用 session.destroy它本身调用 clear 以及其他一些东西。

于 2013-07-26T14:08:23.220 回答
9

删除用户的会话

session.delete(:user_id)
于 2015-08-25T08:43:18.557 回答
5

要仅清除某些参数,您可以使用:

[:param1, :param2, :param3].each { |k| session.delete(k) }
于 2014-02-20T05:21:25.740 回答
3

将此代码添加到您的 ApplicationController

def reset_session
  @_request.reset_session
end

(不知道为什么上面没有人提到这个代码,因为它解决了我的问题) http://apidock.com/rails/ActionController/RackDelegation/reset_session

于 2016-04-01T13:04:23.817 回答