tyb*_*103 127 session ruby-on-rails session-variables session-timeout
我似乎无法在任何地方找到它...如何在Rails中删除/销毁/重置/清空/清除用户的会话?不只是一个价值,而是整个事情......
Gde*_*lin 194
要清除整个事物,请在控制器中使用reset_session方法.
reset_session
Run Code Online (Sandbox Code Playgroud)
以下是此方法的文档:http://api.rubyonrails.org/classes/ActionController/Base.html#M000668
通过清除存储在其中的所有对象并初始化新的会话对象来重置会话.
祝好运!
Lav*_*ixu 41
rails中的session是一个哈希对象.因此,任何可用于清除散列的函数都可以用于会话.
session.clear
Run Code Online (Sandbox Code Playgroud)
或者如果必须销毁特定密钥:
session.delete(key)
Run Code Online (Sandbox Code Playgroud)
测试在轨道3.2
添加
人们提到的session={}是一个坏主意.关于session.clear,Lobati评论 - 看起来你可能最好使用reset_session [比session.clear],因为它做了一些其他清理超出session.clear的做法.在内部, reset_session调用session.destroy,它本身也调用clear以及其他一些东西.
要仅清除某些参数,您可以使用:
[:param1, :param2, :param3].each { |k| session.delete(k) }
Run Code Online (Sandbox Code Playgroud)
删除用户的会话
session.delete(:user_id)
Run Code Online (Sandbox Code Playgroud)
小智 5
将此代码添加到您的 ApplicationController
def reset_session
@_request.reset_session
end
Run Code Online (Sandbox Code Playgroud)
(不知道为什么上面没有人提到这段代码,因为它解决了我的问题) http://apidock.com/rails/ActionController/RackDelegation/reset_session