2010-02-24 4 views
0

현재 Ruby on Rails 시스템이 있으며 GWT로 이식 할 계획입니다. 이렇게하기 전에 GWT가 현재 콘텐츠를 사용하고 표시 할 수 있음을 보여주기 위해 GWT에 사이트의 일부가 작성된 개념 증명이 필요합니다. 다음과 같이 시스템의 GWT 부에서의 데이터의 흐름은 다음하이브리드 Ruby/GWT 시스템에서 세션을 어떻게 관리합니까?

  1. 클라이언트
  2. 서버 RPC 호출을 수신 GWT 서버로 RPC 호출을 전송 한 후 레일 시스템과 동등한 Ajax 요청을 만든다
  3. 서버는 Ajax 요청의 결과에서 자바 객체가 다시 클라이언트

에 전달 지금 실행 해요 문제는 두 시스템에서 관리 사용자 세션 데이터입니다 생성합니다. 우리는 오직 하나의 Tomcat 인스턴스 만 가지고 있으며, 그것은 자체 유형의 세션을 가지고 있습니다. 그리고 Ruby 시스템은 ActiveRecordStore를 사용하여 세션 데이터를 데이터베이스에 저장합니다.

문제는 Tomcat 시스템이 Ruby 시스템과 대화 할 때 GWT 클라이언트가 로그인 요청을하면 GWT 시스템에서 마지막으로 로그인 한 사용자가 Rails 시스템에서 수행중인 모든 나가는 Ajax 요청을 갖는다는 것이다 마치 Tomcat 시스템이 Rails에 대한 단일 클라이언트처럼 보이기 때문에 현재 사용자 인 것처럼 보입니다.

어쨌든, 사용자가 Tomcat 시스템과 세션을 시작하면 Ruby 시스템은 이것을 인식하고 이에 상응하는 세션을 가지게되어 Tomcat 서버가 단일 클라이언트 임에도 불구하고 , Rails 시스템은 많은 다른 사용자들이 그 하나의 클라이언트로부터 그것과 통신한다는 사실을 알고있다.

+0

관련 질문 : http://stackoverflow.com/questions/2270215/gwt-rpc-cookie-authentication 및 http://stackoverflow.com/questions/2053960/gwt-and-storing-a-session-key –

+0

"사용자가 Tomcat 시스템과 세션을 시작"한다는 것은 무엇을 의미합니까? 그는 Tomcat 또는 사용자 정의 솔루션의 일부 인증 메소드를 사용하여 로그인합니까? 어느 쪽이든, 세션 키는 쿠키 (예 : JSESSIONID)에 저장되어있을 가능성이 높으며 RoR 측에 전달해야합니다. –

+0

나는 당신의 단계 2와 관련이 있습니다. 사용자 지정 RPC 직렬화 처리를 수행해야합니까? GWT 서버 측에서 "Ajax 요청을 Rails 시스템에 적용"하기 위해 사용한 기본 메커니즘은 무엇입니까? 나는 특히 GWT-Rails 인터페이스에서 인터 트러스트되어있다. 감사합니다. – cellepo

답변

1

이 문제를 해결하는 가장 좋은 방법은 세션을 저장하는 데이터베이스 대신 쿠키를 사용하는 것입니다. Rails는 이것을 기본적으로 지원합니다. 실제로는 현재 기본 쿠키 저장소입니다. 쿠키 자체는 사용자의 변조를 방지하기 위해 서버 비밀에 의해 서명됩니다. Rails 구현은 Ruby 마샬링을 사용하여 데이터를 덤프 /로드하므로 Java로 구현해야 할 수도 있고 동일한 아이디어를 사용하여 양측에 고유 한 쿠키 관리자를 구현할 수도 있습니다.

Java 응용 프로그램에서 JRuby의 Ruby 코드를 사용할 수도 있습니다.

0

RoR에 대해 모르겠지만 대부분의 웹 기술 세션에서 쿠키를 사용하여 유지 관리됩니다. Java 서버에서 RoR 인스턴스로 여러 번 호출 할 때 쿠키를 유지하면 (모든 사용자에 대해) 모두 훌륭합니다.

+0

나는 이것을 시험해 보겠다. 조언 해주셔서 감사합니다 –

관련 문제