首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Rails -多个顶级域和单个会话/cookie

Rails -多个顶级域和单个会话/cookie
EN

Stack Overflow用户
提问于 2008-12-18 07:48:33
回答 5查看 11.5K关注 0票数 18

我已经在这个问题上挣扎了很长一段时间,还没有找到解决方案。我需要一个用户能够看到一个单一的登录多个顶级域名。

我的理解是,这需要在environment.rb中设置并使用before_dispatch调用。这就是我想出来的:

require 'activesupport'
require 'dispatcher'
module ActionController
   class Dispatcher

      def set_session_domain
         ActionController::Base.session_options.update :session_domain => "#{@request.host}"
      end 

      before_dispatch :set_session_domain
   end
end

但是,当我尝试从session[:session_domain]拉取值时,这似乎不起作用。

任何帮助都是非常感谢的。

EN

回答 5

Stack Overflow用户

发布于 2008-12-18 14:51:12

这个有点棘手。由于cookies只能分配给当前域(比如“forms.example.com”)和父域(".example.com",但不能分配给".com"),而不能分配给其他域("othersite.com"),因此您必须为自己找到另一个解决方案。这与Rails无关,而是与cookie的工作方式有关。

编辑:会话依赖于存储在cookie中的特定于客户端的句柄,这就是会话也不能跨域工作的原因。

This site有一种可能的解决方案来创建跨域cookie,这是我所知道的最干净的方法,尽管它可能有一些安全隐患。更复杂的版本将使服务器直接通过某种安全通道进行通信。

如果您正在寻找一种更通用的单点登录服务,请尝试实现某种形式的OpenID

票数 8
EN

Stack Overflow用户

发布于 2010-05-23 20:19:22

对于Rails 2.3中的子域

ActionController::Base.session = { :domain => ".mydomain.com" }

对于顶级域,请尝试this middleware

我目前一直在使用上面的中间件,它并不完全像预期的那样工作。如果您使用中间件,则不需要上面的代码,因为它还处理子域。

票数 2
EN

Stack Overflow用户

发布于 2008-12-23 17:37:20

如果您希望跨域进行身份验证,而不管它们是顶级域还是子域,则可能需要使用RubyCAS之类的东西。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/377137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档