【问题标题】:Rails: Destroy session with a session_idRails:使用 session_id 销毁会话
【发布时间】:2014-04-24 09:06:48
【问题描述】:

我正在编写一个需要通过 session_id 销毁任意会话的 gem。

目前我正在使用以下代码

case Rails.application.config.session_store
when ActionDispatch::Session::CacheStore
  Rails.cache.delete("_session_id:#{session_id}")
when ActionDispatch::Session::ActiveRecordStore
  ActiveRecord::SessionStore.session_class.find(session_id).destroy
when ActionDispatch::Session::CookieStore
  # cannot remove a client-storage session
end

但我已经为每个 SessionStorage 类找到了 destroy_session(env, session_id, options) 方法。如何在脚本中调用此方法? (不在请求或任何控制器中)

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    如果您将会话存储在数据库中,您可以在控制台中尝试一下吗:

    rake db:sessions:clear
    

    您还可以使用控制器中的以下内容销毁整个会话:

    reset_session
    

    【讨论】:

    • 对不起,我没有说清楚。我目前正在编写一个需要通过 session_id 销毁任意会话的 gem。所以我想调用一些方法,比如ActionDispatch::Session::CacheStore#destroy_session。但我不知道怎么称呼它。
    猜你喜欢
    • 2011-06-08
    • 2011-07-18
    • 2011-11-25
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多