【发布时间】: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
如何在 rails 3 中获取当前会话 ID?
我尝试了以下方法,但没有成功:
session[:session_id]
session['session_id']
session[:id]
session['id']
session.id
session.session_id
【问题讨论】:
标签: ruby-on-rails ruby session
我现在无法测试它,但据我所知,Rails 3 上的会话 id 变量从 'id' 更改为 'session_id',你试过吗?希望它对你有用。
【讨论】:
您是否尝试过以下方法?
request.session_options[:id]
【讨论】:
session.id。
rack 中引入的更改。更多信息:github.com/rack/rack/pull/342
#create 的上下文中没有用。因为在会话创建操作之后,新的会话 ID 将被持久化(在我的情况下是 Redis)所以这是不安全的方法
它还返回会话 ID:
session[:session_id]
【讨论】:
reset_session来使用会话固定保护,则不会
如果您需要从 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')
app 和ENV 是在启动 rails 控制台时设置的,不需要设置这些
您可以通过一些处理 cookie 的浏览器插件或(cookie 检查器、cookie 管理器...)获得session_id
【讨论】:
Rails 4.0 以后应该是:
session.id
【讨论】: