2010-12-16 7 views
2

흥미로운 사례가 있습니다. 필자는 Rails 2.3 애플리케이션의 화이트 라벨 기능을 다루고 있으며 동적 세션 도메인 설정에 문제가 있습니다.레일 : 동적 세션 도메인 및 하위 도메인 간의 공유 세션

그래서 각 화이트 라벨에는 company1.com, company2.com, company3.com이라는 도메인이 있어야합니다. 그들 각각은 하위 도메인을 지원하고 그들 사이에 세션을 공유해야합니다.

e.e. test1.company1.com, test2.company1.com, company1.com < = 공통 세션을 공유해야합니다. test1.example.com, example.com < =은 공통 세션을 공유해야하지만 company1.com과는 다릅니다. (하나의 기본 도메인에 대한) 일반적인 경우

는이 방법으로 이루어집니다 : 나는 여러 도메인을 지원하려면

file:production.rb 
config.action_controller.session[:domain] = '.company1.com' 

것은 내가 동적으로 액세스 사이트 도메인에 따라이 설정 옵션을 설정해야합니다을 . 나는 현재 이런 식으로 그것을 이루고자 노력 중이다.

file:environment.rb 
require 'dispatcher' 
module ActionController 
    class Dispatcher 
    def set_session_domain 
     tld_size = SubdomainFu.tld_size+1 
     host_name = @env['HTTP_HOST'].split('.')[-tld_size,tld_size].join('.') 
     ActionController::Base.session = { :domain => ".#{host_name}" } 
    end 
    before_dispatch :set_session_domain 
    end 
end 

그러나 위의 코드는 작동하지 않는다.

비슷한 결과를 얻었습니까? 아니면 문제/해결책이 어디에있을 수 있는지 알고 계십니까? 세션을 처리 랙 미들웨어를 초기화 할 때 만 사용되기 때문에 귀하의 응용 프로그램을 부팅 때문에 경우에만

는 ActionController :: Base.session이 작동하지 않을 사용 시간

+0

나는 작업이 코드를 얻을 수있었습니다. 작동하지 않는 것을 나타낼 수 있습니까? 각 단계에서 "# {host_name}"을 로그에 인쇄하여 올바른 값을 설정했는지 확인 했습니까? 내 생각 엔 : domain 옵션에 대한 적절한 값을 설정하지 않는다는 것입니다. 예를 들어 –

답변