1

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 对象,但我不确定如何使它成为session正常 Rails 意义上的可用对象。

4

1 回答 1

2

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

于 2013-07-25T17:31:17.797 回答