我发现了许多描述如何执行此操作的帖子。它们看起来就像把它放在适当的环境配置文件中一样:
config.action_controller.session[:domain] = '.localhost'
但是,如果我这样做,那么尝试登录(我正在使用设计)将失败:
ActionController::InvalidAuthenticityToken
我看到其他人发布了相同的问题(提供设置会话[:域名]的建议的各个博客的评论部分)但是我没有找到任何人回答关于为什么会发生这种情况的问题的案例。如何解决它。
有什么想法吗?
答案 0 :(得分:1)
我不确定这是否与您的问题有关,但您是否尝试将会话域设置为'.localhost'?这不会有效,因为它实际上是您尝试为其设置Cookie的顶级域名。
答案 1 :(得分:1)
我在config / initializers / set_session_domain.rb中有这个片段:
module ActionControllerExtensions
def self.included(base)
base::Dispatcher.send :include, DispatcherExtensions
end
module DispatcherExtensions
def self.included(base)
base.send :before_dispatch, :set_session_domain
end
def set_session_domain
domain = @env['HTTP_HOST'].gsub(/:\d+$/, '').gsub(/^[^.]*/, '')
@env['rack.session.options'].update :domain => domain
end
end
end
ActionController.send :include, ActionControllerExtensions
一切都很好。