【问题标题】:Access rails session information by session id通过会话 id 访问 rails 会话信息
【发布时间】:2009-12-17 21:56:03
【问题描述】:

我正在使用默认的基于 cookie 的会话存储。基本上,我正在使用 heroku,我需要从我的应用程序:http://test1.myapp.com 转到 heroku 一页:http://myapp.heroku.com/billing - 所以当我转到 heroku url 时,我需要访问会话。我想访问 heroku 页面上的 session[:user_id] ,但是当转到 heroku 页面时,会生成一个新的会话。

我想我可以在查询字符串的主 url 上传递 session_id,但我不知道如何从 heroku url 页面访问它。

我试过这个:

session[params[:sid]][:user_id]  

但它不起作用。如果您知道会话 ID,是否可以访问会话信息?还是有另一种方法可以从另一个 url 读取会话信息(但都在同一个 rails 应用程序中)?

谢谢。

【问题讨论】:

  • 您使用的是基于 cookie 的会话,还是基于数据库的会话?使用基于 cookie 的会话可能是不可能的,但如果您使用 ActiveRecord 会话存储,您应该能够根据其 ID 从数据库中获取会话并解组内容。
  • 我正在使用基于 cookie 的会话。

标签: ruby-on-rails heroku


【解决方案1】:

为了使其正常工作,您需要在 Heroku 中设置您的域,以便 Heroku 应用程序在与主应用程序相同的 TLD 下运行。为此,请将您的域添加到您的计费应用中,如下所示:

$ heroku domains:add billing.myapp.com

请务必关注Heroku's instructions 来设置您的 DNS。

然后,您的计费应用程序将运行在 http://billing.myapp.com/billing(在 Heroku 上)。这样控制器应该能够访问相同的会话和 cookie。

请务必在两个应用程序的 environment/production.rb 中设置会话域:

config.action_controller.session = { :domain => ".myapp.com" }

我还应该提到,您可能会考虑在应用程序之间使用某种共享身份验证或令牌身份验证,因为 cookie 可能会被黑客入侵或以其他方式受到损害。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-27
    • 2016-04-17
    • 1970-01-01
    • 1970-01-01
    • 2014-11-08
    • 2014-07-24
    • 2013-05-30
    相关资源
    最近更新 更多