2010-04-14 3 views
0

웹 사이트 및 지불 게이트웨이 통합에 대한 전형적인 시나리오가 있습니다. 지불 요청은 지불 프로세서로 전송되고 지불 프로세서는 전달 된 일부 매개 변수를 사용하여 완료되면 내 애플리케이션을 호출합니다 원래 요청에서.struts2에서 웹 세션 복원

매개 변수 중 jsessionid를 전달하면 원격 서버가 고객 브라우저를 통해 서버로 요청을 보내면 세션이 초기 지불 요청을 보내는 데 사용 된 세션과 같을 것으로 기대합니다. 지불 프로세서에는 당사의 요청에 따라 원래 jsessionid가 포함되어 있지만 두 가지 세션이 있습니다 (https://blabla/?jsessionid=something).

'OLD'세션과 'NEW'세션을 연결하는 유일한 방법은 요청 URL의 jsessionid입니다. 어떻게하면 struts2에서 세션을 다시 생성해야합니까?

아이디어가 있으십니까? 이것이 가능합니까 아니면 사용자가 서버에서 데이터 입력 양식이있는 지불 프로세서의 완전히 다른 영역으로 이동할 때 'OLD'세션 데이터가 삭제 되었습니까? 이것은 우리 세션의 재현 가능성을 설명 할 것입니다.

답장을 보내 주셔서 감사합니다.

답변

2

아마도 (나는 잘 모르겠다) 다른 웹 사이트의 이전 스트럿츠 (서블릿) 세션에 자신을 "리바 인딩"하려고 시도하는 것이 좋지 않을 수도 있습니다.

사용자가 자격 증명을 묻지 않고 지불 프로세서에서 struts2 웹 사이트로 돌아가는 것을 이해할 수 있습니다. 그러나 재 인증을 필요로하지 않는 사용자의 관점에서 볼 때 높은 수준의 의미로 "세션을 유지"하기 위해서는 반드시 스트럿츠 서블릿 세션을 유지해야한다는 의미는 아닙니다. 다시 바인딩하기 위해 이것은 약간 더럽고 안전하지 않은 것처럼 보입니다. 예를 들어, 사용자가 지불 사이트에있는 순간에 원래 세션이 열려 있거나 닫혀 있다면 명확하지 않습니다 (사용자 또는 개발자). 지불 사이트에 ...이 또한 원래의 사이트에서 사용자가 로그 아웃 할 때 조치를 "로그 아웃")

나는 이러한 시나리오 중 하나를 선택하는 것 :

1) 인증 된 사용자가를 클릭 링크를 클릭하면 다른 창이 열립니다 - 두 개의 활성 세션이 있으며 각각을 독립적으로 탐색하고 닫을 수 있습니다 (첫 번째 세션은 두 번째 세션을 여는 인증 티켓을 제공함). 그게 제가 제 홈 뱅킹에서 흔히 볼 수있는 행동입니다.

2) 새 지불 사이트 페이지가 이전 페이지를 대체하면 원래 (서블릿) 세션이 무효화됩니다. - 그러나 새 세션에서는 지불 사이트에 인증 승인 토큰이 배치되어 원본 사이트로 돌아가십시오 (일부 세션 관련 데이터 포함). 그러나이 경우에는 새로운 servlet-struts2 세션이있게됩니다.

기본적으로 살아있는 브라우저 창 (다른 웹 응용 프로그램의 일부 페이지로 닫히거나 바뀌 었음)에 대해 서블릿 세션을 생생하게 생각하는 것은 모호합니다.

여기도 참조 : http://nickcoblentz.blogspot.com/2008/09/jsessionid-regeneration-in-struts-2.html

관련 문제