Ruby on rails Rails应用程序中的路径特定cookie

Ruby on rails Rails应用程序中的路径特定cookie,ruby-on-rails,session,cookies,Ruby On Rails,Session,Cookies,我正在一个应用程序中管理一个微型站点生成器 每个迷你站点都有自己的身份验证 有了子域,我可以专门登录,并且只为一个迷你站点设置,而不为另一个设置 现在,我希望有一个故障切换,每个迷你站点都可以在不设置子域的情况下访问:http://mygenerator/minisites/1123 Cookie是否可以在ministe/路径级别确定范围 或者,是否有一种方法可以在控制器级别的过滤器之前动态调整cookie键 我查看了session\u storeconfig中的:path选项,但我认为它与此无

我正在一个应用程序中管理一个微型站点生成器

每个迷你站点都有自己的身份验证

有了子域,我可以专门登录,并且只为一个迷你站点设置,而不为另一个设置

现在,我希望有一个故障切换,每个迷你站点都可以在不设置子域的情况下访问:
http://mygenerator/minisites/1123

Cookie是否可以在
ministe/
路径级别确定范围

或者,是否有一种方法可以在控制器级别的
过滤器之前动态调整cookie键

我查看了
session\u store
config中的
:path
选项,但我认为它与此无关,并且它在重定向循环中破坏了designe


谢谢

我知道这是一个迟来的答复,但我在网上没有找到任何回答这个问题的东西

我的问题是,应用程序总是在子路径上运行,但会话cookie总是被发布到/ 对我来说,通过设置并使用
Rails.application.config.x.base\uURL
对于您的特定问题,您可以从方法中给定的
请求
对象中找到要设置的路径

这需要添加到rails应用程序的新文件中
/config/initializers/session_store.rb

  module SessionPath
      extend ActiveSupport::Concern

      def self.included(base)
        base.class_eval do
          alias_method :set_cookie_original, :set_cookie
          alias_method :set_cookie, :set_cookie_extended
        end
      end

      def set_cookie_extended(request, session_id, cookie)
        cookie[:path] = Rails.application.config.x.base_url #or what you need
        set_cookie_original(request, session_id, cookie)
      end

    end

ActionDispatch::Session::AbstractStore.send(:include, SessionPath)

黑客破解cookie感觉非常费力,加上cookie存储空间有限,因此将多次登录存储到同一个cookie也不是一个好主意。你为什么不选择子域呢?这似乎是最明智的方法。谢谢你的建议。这将是一个额外的功能,以避免需要设置子域才能使用该应用程序。这就是我的观点:为什么设置子域是一个硬要求?这是通配符证书的价格吗?听起来你想做3个小时的工作,这样你就可以省去1个小时的麻烦。我完全同意你的观点,它已经可以用于子域,我只是想让它在几秒钟内为最终用户工作,比如在Heroku上,在Heroku上,通配符子域是不可用的。