设计子域之间的会话共享



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

我遵循了这个 Devise 配置,但它不起作用。

这是我的/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

和我的配置/初始值设定项/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 容器中,所以不确定这是否可能是个问题。

尝试:

config/initializers/session_store.rb

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

上行中的注释:domain: :all

(不要忘记重新启动导轨并清除您的 cookie(

感谢您的

回复@iashraf。

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

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

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

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

最新更新