3

我正在开发一个在一个应用程序中管理的迷你站点生成器。

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

使用子域,我可以专门登录并仅对一个迷你站点进行设置,而对另一个迷你站点没有设置。

现在,我想进行故障转移,无需设置子域即可访问每个迷你站点:http://mygenerator/minisites/1123

cookie 是否可以在minisite/路径级别限定范围?

或者,有没有办法before_filter在控制器级别动态调整 cookie 键?

我查看了配置中的:path选项session_store,但我认为它不相关,并且它在重定向循环中搞砸了设计。

谢谢 !

4

1 回答 1

1

我知道它的回复很晚,但我在互联网上没有找到任何回答这个问题的东西。

我的问题是应用程序总是在子路径上运行,但会话 cookie 总是发给 / 对我来说,这是通过设置和使用您的特定问题来解决的,您可以从方法中给出的对象中Rails.application.config.x.base_url 找出要设置的路径request

这需要添加到您的 rails Applcation 的新文件中./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)
于 2017-05-29T09:28:05.710 回答