gpt4 book ai didi

ruby-on-rails - Rails 4 中跨域的 session

转载 作者:行者123 更新时间:2023-12-04 15:21:36 34 4
gpt4 key购买 nike

我想要跨域(而不是子域)使用 session 时遇到问题。例如,我将 .co.uk、.com.au 和 .com 都用于同一个地址。

我知道对于子域,我可以使用以下内容:

SomeApp::Application.config.session_store :cookie_store, key: '_some_app_session', domain => :all, :tld_length => 2

但我希望我的解决方案在实际域之间工作,以拥有一组 session /cookie。

最佳答案

由于您的默认 session 存储是“cookie_store”

您可以像发送带有身份验证 token 的电子邮件链接一样执行此操作。检查以验证 example.org 上的 cookie 是否正确,如果正确,请将它们重定向到:

http://example.com?token=
然后检查以确保 token 与您到达时数据库中的 token 相匹配。如果 token 匹配,则为 example.com 域创建 session cookie,然后更改数据库中的 token 。

这将成功地从一个域转移到另一个域,同时提供对新域的持久登录(通过 cookie),并通过更改数据库中的身份验证 token 关闭他们身后的门。

编辑

要在下面回答您的问题,我认为您不需要中间件或任何花哨的东西。您可以在 example.org 的应用程序 Controller 中做一个简单的 before 过滤器,例如:

before_filter :redirect_to_dot_com
...
def redirect_to_dot_com
url = "http://example.com" + request.fullpath
url= destination + (url.include?('?') ? '&' : '?') + "token=#{current_user.token}" if signed_in?
redirect_to url, status: 301
end

这将以任何一种方式重定向用户,如果用户在 .org 站点上登录,则将 token 附加到查询中。

更多详情请访问 Persisting user sessions when switching to a new domain name (Ruby on Rails)

关于ruby-on-rails - Rails 4 中跨域的 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29144772/

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