2009-07-16 5 views
0

인증 서블릿과 실제 JSP 간의 쿠키 가시성에 이상한 문제가 있습니다. 우리는 서블릿을 사용하여 사용자가 유효한 사용자인지를 확인하고 있으며, 그럴 경우 HttpServletResponse에 referer url을 사용하여 쿠키를 추가합니다 (이는 통합이 자신의 로그인 페이지로 리디렉션 될 수 있도록하기위한 것입니다). 로그 아웃). 로그 아웃 작업은 동일한 서블릿을 거치며 쿠키가 검색되고 사용자는 저장된 쿠키 URL로 다시 이동합니다. 이것은 모두 작동합니다.Java 서블릿/JSP 쿠키 연결 끊기

그러나 내 사이트에서 pageContext.getRequest(). getCookies()를 통해 가져온 쿠키를 인쇄하면 [또는 방화 광구의 콘솔을 통해] 쿠키가 전혀 저장되지 않습니다. 말 그대로 문자 그대로입니다. 그러나 로그 아웃 링크를 클릭하고 인증 서블릿으로 돌아 가면 쿠키가 발견되고 그에 따라 리디렉션이 이어집니다.

문제는 로그 아웃과 동일한 방식으로 타임 아웃 작업을 처리해야하지만 타임 아웃 검사는 JSP 태그의 서블릿 외부에 있습니다. 타임 아웃은 쿠키를 찾을 수 없기 때문에 표준 시간 초과 페이지를 사용하고 있습니다. 통합 된 고객은보고 싶지 않을 것입니다.

여기에 어떤 아이디어가 있습니까?

[답변] 경로 문제로 판명되었습니다. 어떤 코드도 붙여 넣지 않았지만 경로를 설정하지 않고 쿠키를 작성했기 때문에 쿠키는 서블릿 디렉토리에서만 볼 수있었습니다. "/"경로를 설정하면 쿠키가 사이트 전체에 표시됩니다.

답변

0

실제로 경로 문제로 판명되었습니다. 어떤 코드도 붙여 넣지 않았지만 경로를 설정하지 않고 쿠키를 작성했기 때문에 쿠키는 서블릿 디렉토리에서만 볼 수있었습니다. "/"경로를 설정하면 쿠키가 사이트 전체에 표시됩니다.

1

"내 사이트 내에서"라고 말하면 사이트가 다른 (하위) 도메인에 배포되었다는 의미입니까? 기본적으로 쿠키는 설정 한 호스트에서만 볼 수 있습니다. 즉, "www.example.com"에서 설정된 쿠키는 "other.example.com"에 표시되지 않습니다. 쿠키 도메인을 명시 적으로 지정하여이 둘을 공유 할 수 있습니다 (예 : "example.com").

+0

아니요, 모두 같은 도메인에 있습니다. 서블릿은 자체 디렉토리에 있지만 JSP 페이지는 루트에서 제공됩니다. – Gopherkhan

1

어떻게 리디렉션하고 있습니까?

RequestDispatcherforward 메서드는 요청 및 응답 객체 (아마도 이미 작업 한 객체)를 사용합니다. 이것은 요청 객체가 서블릿에서 다루고있는 것과 동일한 HttpServletRequest 객체라는 것을 의미합니다.

+0

실제로 HttpServletResponse의 sendRedirect (...)를 사용하고 있습니다. 그래서 서블릿에서 쿠키를 인증하고 저장 한 후 메인 사이트로 리디렉션하려고합니다. 나는 그것을 밖으로 시도 할 것이다. – Gopherkhan

+0

굉장합니다. 그게 효과가 있었어. 감사. – Gopherkhan

+0

그러나 리디렉션 없이도 다음 페이지로 이동하면 쿠키가 손실됩니다 ... 해당 부분에 대해 계속 작업하고 있습니다. – Gopherkhan

관련 문제