【问题标题】:How to load Rails Session from session_id?如何从 session_id 加载 Rails 会话?
【发布时间】:2013-07-24 03:18:04
【问题描述】:

我在我的应用程序中使用MyApp::Application.config.session_store :active_record_store 将会话存储在数据库中。一切正常。但是,我希望能够在通过session_id 时加载特定的会话。这是服务器在客户端存储为 cookie 的值。

我的 Rails 应用程序有一个不能使用 cookie 的客户端,所以它必须在参数中向我传递 session_id。我想使用before_action 或某种过滤器来获取该参数并使用它在我的控制器中加载session,而不是由于缺少适当的cookie 而加载空会话。

有什么方法可以做到这一点吗?我不想完全关闭 cookie 方法,因为我的 Web 客户端使用 cookie,只是我的移动客户端不能。

编辑: 如果我声明 class Session < ActiveRecord::Base 然后执行 Session.find_by_session_id('whatever') 我确实得到了一个 Session ActiveRecord 对象,但我不确定如何在正常的 Rails 意义上使它成为可用的 session

【问题讨论】:

  • 已解决:只需在before_action 过滤器中执行 request.session_options[:id] = "whatever you want",Rails 将在您访问会话时使用该 session_id 加载会话(感谢延迟加载)。

标签: ruby-on-rails session cookies ruby-on-rails-4


【解决方案1】:

只需在 before_action 过滤器中执行 request.session_options[:id] = "whatever you want",Rails 将在您访问 Session 时使用该 session_id 来加载它(感谢延迟加载)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-16
    • 2010-09-28
    • 1970-01-01
    • 1970-01-01
    • 2012-09-24
    • 1970-01-01
    相关资源
    最近更新 更多