2016-08-04 14 views
0

다음은 시나리오입니다.여러 도메인을 지원하는 Rails 앱에서 세션을 유지 관리하려면 어떻게해야합니까?

단일 시스템에서 실행중인 Rails 앱이 있습니다. 이 토론을위한 앱은 콘텐츠 관리 시스템이며 네트워크의 여러 사이트를 제공하는 데 사용됩니다. app.com으로 연락 할 수 있습니다. 사용자는 자신의 사이트에 대한 맞춤 도메인을 설정할 수 있어야합니다.

내가 고민하는 것은 사용자가 네트워크에 한 번만 로그인해야하므로 세션을 유지하는 방법입니다. 네트워크상의 사이트를 방문하는 경우 해당 세션을 유지 관리해야합니다. (기술적으로 사용자는 방문하는 사이트의 사용자 정의 URL만으로도 동일한 사이트에 계속 있습니다.)

앱의 모든 사이트에서 세션을 유지 관리하려면 어떻게해야합니까?

쿠키에 대한 내용을 토대로 볼 때 고유 한 도메인 간에는 b/c 쿠키를 공유 할 수 없습니다. 내가 찾고있는 것은 문제의 부분을 이해하는 데 도움이됩니다. 나는 랙 미들웨어를 작성하거나 다른 기술을 앱 앞에 추가하는 게임이다. 궁극적으로 저는 각 도메인에서 HTTPS를 사용할 수 있도록하고 싶습니다. 그러나 지금은 그만 두도록하겠습니다.

답변

0

일련의 리디렉션을 통해 세션을 전송할 수 있습니다.

도메인이 platform.com 인 앱이 있고이 플랫폼에 customdomain.com과 같은 맞춤 도메인을 호스팅한다고 가정 해 보겠습니다. 이 질문에서 설명한 것처럼 사용자가 platform.com에 로그인 할 때마다 호스트 된 모든 도메인에 로그인해야합니다.

기본 개념은 다음과 같이 작동 : 사용자가 customdomain.com에 페이지를 요청

  • platform.com

    1. 사용자가 로그인
    2. 응용 프로그램 서버가 customdomain.com의 요청을보고 사용자가 로그인하지 않은 것을보고 에서 customdomain.com.
    3. 애플리케이션 서버
    4. 애플리케이션 서버 set_session

    짜잔에 응답하여 세션 쿠키를 설정 customdomain.com/set_session?login_token=<HASH>

  • 애플리케이션 서버 리디렉션 platform.com/get_session?redirect=customdomain.com 리디렉션! 이제 사용자의 세션이 platform.com에서 customdomain.com으로 전송되었습니다.

    경고 : 앱이 리디렉션하기로 결정한시기에 대한 자세한 내용은 여기를 참조하십시오. 무한 리디렉션주기에 오르지 않도록 논리를 추가해야합니다.