我正在使用MyApp::Application.config.session_store :active_record_store
在我的应用程序中将 session 存储在数据库中。一切都很好。但是,我希望能够在传递 session_id
时加载特定 session 。 。这是服务器在客户端存储为 cookie 的值。
我的 Rails 应用程序有一个无法使用 cookie 的客户端,因此它必须向我传递 session_id
在一个参数中。我想使用before_action
或某种过滤器来获取该参数并使用它来加载 session
由于缺乏适当的 cookie,在我的 Controller 中而不是应用程序加载空 session 。
有什么办法可以做到这一点吗?我不想完全关闭 cookie 方法,因为我的 Web 客户端使用 cookie,只是我的移动客户端不能。
编辑:
如果我声明class Session < ActiveRecord::Base
然后做Session.find_by_session_id('whatever')
我确实得到了一个 Session ActiveRecord 对象,但我不确定如何将其变成可用的 session
在正常的 Rails 意义上。
最佳答案
只需在 before_action 过滤器中执行 request.session_options[:id] = "whatever you Want",Rails 将在您访问 session 时使用该 session_id 来加载 session (感谢延迟加载)。
关于ruby-on-rails - 如何从session_id加载Rails session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17824628/