我正在尝试在子域之间共享会话,但我不能。
我遵循了这个 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
上,这奏效了!