设计子域之间的会话共享

时间:2017-02-14 16:14:53

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

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

我遵循了这个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容器中,因此不确定这是否有问题。

2 个答案:

答案 0 :(得分:2)

尝试:

<强>配置/初始化/ session_store.rb

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

请注意以上行:domain: :all

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

答案 1 :(得分:-1)

感谢@iashraf的回复。

我已经尝试过,但对我没用。

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

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

最后,我从super块中删除了重定向,并将url_path放在after_sign_up_path_for上,这很有效!