【问题标题】:Ruby on Rails allowing sessions between ports locallyRuby on Rails 允许本地端口之间的会话
【发布时间】:2013-12-05 21:33:07
【问题描述】:

基本上,我正在使用 RocketPants 和 Devise 在 Rails 中开发 API,并且正在使用 AngularJS 创建客户端。因为它们位于由单独的人维护的文件夹中,所以我在 localhost:3000 上运行 rails api,在 localhost:8000 上运行客户端,在实时环境中,它们将位于同一顶级域的子域中。 api.example.comapp.example.com.

我已经允许使用 Rack Cors 进行跨域请求,这似乎工作正常,我可以通过将我的凭据发送到 API 来查询并登录(我还通过返回登录用户的 id 检查这是否有效)。

但是,客户端似乎没有挂在会话上,在我登录并返回确认我已成功登录并发出另一个请求后,它说current_user 为 Nil。

我认为通过在session_store.rb 中使用以下内容,我允许在rails 中使用子域

AppName::Application.config.session_store :cookie_store, key: '_app-name_session', domain: :all

但是我无法对此进行测试。

有没有在本地端口之间共享会话的好方法?或者有没有一种好方法可以模拟子域以在 2 个项目(1 个轨道,1 个独立项目)之间进行本地测试?

【问题讨论】:

    标签: ruby-on-rails session devise localhost


    【解决方案1】:

    您是否考虑过使用Pow 为您的开发应用提供服务?

    然后您可以在子域上运行它们,就像在生产环境中一样。

    【讨论】:

    • 看起来很有希望,我现在去看看
    • 工作得很好,cookie session 问题仍然没有解决,但是 POW 提供了一个在本地测试我的代码的好方法。谢谢!
    • 很高兴这有效。对于 cookie 会话,我会尝试在那里明确定义您的域。 AppName::Application.config.session_store :cookie_store, key: '_app-name_session', domain: '*.apphost.dev'
    猜你喜欢
    • 2015-06-02
    • 1970-01-01
    • 2012-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-05
    相关资源
    最近更新 更多