我正在开发一个在一个应用程序中管理的迷你网站生成器。
每个微型站点都有自己的身份验证。
有了子域,我可以专门登录并只对一个微型站点进行设置,而不能对另一个微型站点进行设置。
现在,我想进行故障转移,无需设置子域即可访问每个迷你站点: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/