代码之家  ›  专栏  ›  技术社区  ›  tybro0103

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

  •  121
  • tybro0103  · 技术社区  · 14 年前

    我哪儿都找不到…如何在Rails中删除/销毁/重置/清空/清除用户会话?不仅仅是一个值,而是整个值……

    5 回复  |  直到 6 年前
        1
  •  187
  •   Gdeglin    14 年前

    要清除整个事件,请使用控制器中的重置会话方法。

    reset_session
    

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

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

    祝你好运!

        2
  •  38
  •   barlop Sandeep    6 年前

    Rails中的会话是哈希对象。因此,任何可用于清除哈希的函数都将与会话一起工作。

    session.clear
    

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

    session.delete(key)
    

    在轨道3.2中测试

    补充

    人们提到 session={} 是个坏主意。关于 session.clear ,lobati评论-看起来您最好使用reset_session[而不是session.clear],因为它可以清除session.clear之外的其他内容。内部, reset_session calls session.destroy , which itself calls clear as well some other stuff.

        3
  •  6
  •   vjnan369    9 年前

    删除用户会话

    session.delete(:user_id)
    
        4
  •  5
  •   vladCovaliov    10 年前

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

    [:param1, :param2, :param3].each { |k| session.delete(k) }
    
        5
  •  2
  •   daveomcd    8 年前

    将此代码添加到ApplicationController

    def reset_session
      @_request.reset_session
    end
    

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