设计子域之间的会话共享

Devise session sharing between subdomains

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

我遵循了这个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 容器中,所以不确定这是否会成为问题。

尝试:

config/initializers/session_store.rb

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

上一行注释:domain: :all

(不要忘记重新启动 rails 并清除您的 cookie)

感谢@iashraf 的回复。

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

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

多亏了这个,我发现问题出在其他地方: 我 re-write Devise 的注册控制器,我把它搞砸了,因为我对 super 块上的子域使用了 redirect

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