如何清空/销毁 Rails 中的会话?

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

125935 次浏览

要清除整个东西使用复位会话方法在一个控制器。

reset_session

下面是关于这种方法的文档: http://api.rubyonrails.org/classes/ActionController/Base.html#M000668

通过清除所有 储存在和 初始化新的会话对象。

祝你好运!

因此,任何可用于清除 hash 的函数都将与会话一起工作。

session.clear

或者 如果需要销毁特定的钥匙:

session.delete(key)

在轨道测试3.2

补充

人们提到的 session={}是一个坏主意。关于 session.clear,Lobati 注释——看起来你最好使用 set _ session [而不是 session.clear ] ,因为它除了 session.clear 之外还会做一些其他的清理工作。内部,Set _ session 调用 session这本身也说明了一些其他的东西。

若要只清除某些参数,可以使用:

[: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