ruby-on-rails - Rails 应用程序中特定于路径的 cookie

标签 ruby-on-rails session cookies

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

每个微型站点都有自己的身份验证。

有了子域,我可以专门登录并只对一个微型站点进行设置,而不能对另一个微型站点进行设置。

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

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

或者,有没有办法在 Controller 级别的 before_filter 中动态调整 cookie 键?

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

谢谢!

最佳答案

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

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

这需要添加到您的 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)

关于ruby-on-rails - Rails 应用程序中特定于路径的 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13257493/

相关文章:

cookies - 想了解授权、cookies、用户登录、 session

php - PHP Cookie 参数中 Host 和 Domain 的区别

ruby-on-rails - 为整个 Rails 应用程序更改 CSV 的列分隔符

css - 从 asset_path 输出中删除双引号

html - Ruby on Rails 多选下拉菜单

ASP.NET Identity AuthenticationManager 与 SignInManager 和 cookie 过期

python请求cookies日期格式

ruby-on-rails - 地理编码器 : distance sortable index

javascript - 为什么在 javascript 中使用 fetch 后 session 会被清除?

python - 如何限制来自任何浏览器的一个 session 以获取 flask 中的用户名?