我正在尝试在子域之间共享会话,但我不能。
我遵循了这个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容器中,因此不确定这是否有问题。
答案 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
上,这很有效!