gpt4 book ai didi

ruby-on-rails - 跨不同子域上的 Rails 应用程序共享 session

转载 作者:行者123 更新时间:2023-12-03 13:37:26 24 4
gpt4 key购买 nike

我正在尝试为托管在 example.com 的不同子域的多个 rails (v3.2) 应用程序实现单点登录解决方案

一个应用程序充当身份提供者,使用设计进行身份验证,并位于 users.example.com
其他应用依赖身份提供者进行身份验证,使用 devise+omniauth,域为 [app1.example.com、app2.example.com 和 example.com]。
这篇博文启发了我的大部分实现:http://blog.joshsoftware.com/2010/12/16/multiple-applications-with-devise-omniauth-and-single-sign-on/

我让它工作正常,但问题仍然是 session 没有共享,所以在我登录身份提供者后,我仍然需要从其他每个应用程序调用来进行身份验证,我需要这对用户。

我尝试在 secret_token.rb 中使用相同的 secret token ,在 session_store.rb 和 :domain => :all 中使用相同的 session key (也尝试将 '.example.com' 和 'example.com' 作为值)。仍然没有运气。

执行上述操作后,我在 session.inspect 中看到,在身份提供者登录后, session 变量“warden.user.user.key”被填充。当我立即转到 app1.example.com 上的应用程序时,session.inspect 显示相同的 session_id 和 _csrf_token 但现在缺少“warden.user.user.key”变量。

我觉得我错过了一些愚蠢的东西。有什么想法吗?

最佳答案

我认为还有另一个关于让单个 cookie 跨子域工作的问题可以回答你的问题:

https://stackoverflow.com/a/10403338/2573896

此外,我可以想象使用带有 dalli 和 memcached 的 memcached 集群作为 session 存储也可以:

http://awesomerails.wordpress.com/2011/08/23/rails-3-memcached-session-store/

出于您的应用程序的目的,第一个解决方案更有意义。

关于ruby-on-rails - 跨不同子域上的 Rails 应用程序共享 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16314155/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com