【问题标题】:Finding the session id in rails 3在 rails 3 中查找会话 ID
【发布时间】:2011-06-17 00:37:16
【问题描述】:

如何在 rails 3 中获取当前会话 ID?

我尝试了以下方法,但没有成功:

session[:session_id]
session['session_id']
session[:id]
session['id']
session.id
session.session_id

【问题讨论】:

    标签: ruby-on-rails ruby session


    【解决方案1】:

    我现在无法测试它,但据我所知,Rails 3 上的会话 id 变量从 'id' 更改为 'session_id',你试过吗?希望它对你有用。

    【讨论】:

    • yeah..id 变量在 Rails 3 上从 'id' 更改为 'session_id'。如何访问表的 id?
    【解决方案2】:

    您是否尝试过以下方法?

    request.session_options[:id]
    

    【讨论】:

    • 嗯,这对我来说就像一个 session_id :)
    • Rails 4 中的 session.id
    • 这是rack 中引入的更改。更多信息:github.com/rack/rack/pull/342
    • 这在#create 的上下文中没有用。因为在会话创建操作之后,新的会话 ID 将被持久化(在我的情况下是 Redis)所以这是不安全的方法
    【解决方案3】:

    它还返回会话 ID:

    session[:session_id]
    

    【讨论】:

    • 如果您通过使用reset_session来使用会话固定保护,则不会
    【解决方案4】:

    如果您需要从 Rails 控制台查看给定会话 id 的会话存储中写入的数据,您可以:

    a = Rails.application.config.session_store.new(app, Rails.application.config.session_options)
    a.class # => ActionDispatch::Session::RedisStore
    a.get_session(ENV, '07319b2485be9ac4850664cd47cede38')
    
    
    # or a.find_session(ENV, '07319b2485be9ac4850664cd47cede38')
    

    appENV 是在启动 rails 控制台时设置的,不需要设置这些

    您可以通过一些处理 cookie 的浏览器插件或(cookie 检查器、cookie 管理器...)获得session_id

    【讨论】:

      【解决方案5】:

      Rails 4.0 以后应该是:

      session.id
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-28
        • 1970-01-01
        • 2015-01-01
        • 2011-07-08
        • 2015-01-18
        • 1970-01-01
        • 1970-01-01
        • 2011-08-25
        相关资源
        最近更新 更多