【问题标题】:Devise session sharing between subdomains设计子域之间的会话共享
【发布时间】:2017-07-03 00:47:09
【问题描述】:

我正在尝试在子域之间共享会话,但我不能。

我关注了这个Devise config,但是没有用。

这就是我的 /etc/hosts 的样子:

127.0.0.1       localhost
127.0.0.1       apedraza.bejoy.local
127.0.0.1       bejoy.local
127.0.1.1       augusto-Lenovo-G580
127.0.0.1       api.the_genesis.com

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

还有我的config/initializers/session_store.rb

Rails.application.config.session_store :cookie_store, key: '_bejoy_session', domain: ".bejoy.local"

在我的 bejoy.local:5000/users/sign_in 中,我创建了一个帐户(带有子域 apedraza)并重定向到 apedraza.bejoy.local :5000/admin,但是路由重定向到apedraza.bejoy.local:5000/users/sign_in,这是因为找不到会话。

我将 rails 应用程序放入 Docker 容器中,所以不确定这是否会出现问题。

【问题讨论】:

    标签: ruby-on-rails devise subdomain session-cookies docker-compose


    【解决方案1】:

    感谢@iashraf 的回复。

    我已经尝试过了,但对我不起作用。

    但是,从头开始创建一个新的 rails 项目后,我可以看到配置是正确的。

    因此,我发现问题出在其他地方: 我为 Devise 重新编写了注册控制器,但我把它搞砸了,因为我在 super 块上的子域中使用了 redirect。

    最后,我从super 块中删除了重定向,并将url_path 放在after_sign_up_path_for 上,这样就成功了!

    【讨论】:

      【解决方案2】:

      试试:

      config/initializers/session_store.rb

      Rails.application.config.session_store :cookie_store, key: '_bejoy_session', domain: :all
      

      上面的注释:domain: :all

      (别忘了重启 rails 并清除你的 cookie)

      【讨论】:

      • 你确定这个答案吗?如果不是,应该是评论。
      • 我认为这里缺少tld_length: 2。
      猜你喜欢
      • 2016-12-27
      • 2021-12-26
      • 1970-01-01
      • 1970-01-01
      • 2012-05-11
      • 1970-01-01
      • 2013-02-15
      • 1970-01-01
      • 2011-06-16
      相关资源
      最近更新 更多