2010-09-18 85 views
2

我發現了很多描述如何執行此操作的帖子。他們都看起來像把這個在適宜的環境配置文件:如何使用Rails共享子域之間的會話2.3.8

config.action_controller.session[:domain] = '.localhost' 

但是,如果我這樣做,那麼嘗試登錄(我用色器件)失敗:

ActionController::InvalidAuthenticityToken 

我見其他人發佈了相同的問題(向提供建議設置會話[:域]的各種博客的評論部分),但我還沒有找到任何人已經回答了爲什麼發生這個問題以及如何解決它的問題。

任何想法?

回答

1

我不確定這是否與您的問題有關,但您是否嘗試將會話域設置爲'.localhost'?這不起作用,因爲它實際上是您嘗試爲其設置Cookie的頂級域名。

http://www.ruby-forum.com/topic/181650#794923

1

我有這樣的片段在配置/初始化/ 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 

一切工作相當不錯。