2012-05-27 4 views
0

나는 Spring-MVC 애플리케이션을 개발 중이며, 애플리케이션에 성공적으로 로그인 한 후 어디서 왔는지 동일한 위치로 사용자를 리디렉션해야하는 유스 케이스를 처리해야한다. 사용자가 얼마나 신뢰할 수 있는가 request.getHeader ("Referer");

내가 헤더 내가 Referer가와와와 어떤을 할 수 방화벽 잘 브라우저를 차단할 수 있습니다 신뢰할 수 없습니다 말하는 다양한 스레드를 건너 왔어요

final String refer = request.getHeader("Referer"); 

처럼하지만, 일부 R에게 & D를 수행 한 후 HTTP Referer를 사용 건너 온 내 응용 프로그램이 제대로 작동하지 않습니다.

다른 방법이 있습니까? 아니면 봄에 내가 어딘가에 그것을 저장할 수 있고 사용자가 성공적으로 로그인되면 검색 할 수 있도록 사용자가있는 위치 (URL)에 대한 정보를 어떻게 얻을 수 있습니까? Spring 보안에서 비슷한 기능을 보았습니다.

+0

어떤 스프링 보안 버전을 사용합니까? –

+0

XML 속성'default-target-url'을 제거하면 어떻게됩니까? –

+0

@PauKiatWee : 스프링 보안을 사용하지 않지만 스프링 보안에 implimented가 있다는 것을 알고 있습니다. –

답변

0

글쎄, 그것은 실제로 매우 간단합니다

  • 비 인증 된 사용자는 앱에서 보호 된 자원에 액세스하려고
  • 보안 필터는 요청을
  • 필터 저장의 URL을 차단
  • 세션 속성에서 보호 된 자원에 액세스합니다.
  • 필터가 로그인 화면으로 전달됩니다.
  • 일단 로그인이 성공하면 세션에서 URL이 검색되고 사용자는 빨간색입니다 이 URL로가는

GET 요청을 사용하여 보호 된 리소스에 액세스했습니다. 또 다른 변형은 로그인 폼의 숨겨진 필드에 보호 된 리소스의 URL을 저장하는 것입니다.

+0

사용자가 로그인 버튼을 직접 클릭하는 경우, 제품 세부 정보 페이지에서 사용자가 로그인 링크의 헤더 섹션을 클릭하는 경우. 차단기가 보이지 않아 제품 세부 정보 페이지로 리디렉션됩니다. in action here –

+1

글쎄, 현재 페이지의 URL 인 'Login'을 포함하는 로그인 페이지에 대한 링크/버튼을 생성해야합니다. 그러나이 상황에 대해서는별로 신경 쓰지 않을 것입니다 : 사용자가 로그인 페이지로 간다면 어쨌든 현재 페이지를 떠나길 원할 것입니다. 로그인 후 다른 페이지로 리디렉션하는 것이 더 의미가 있습니다 ("다음과 같은 페이지가 있습니다. w 당신은 인증 된 "또는 간단히 홈 페이지) –

+0

나는 당신의 요지를 이해하지만 이것은 클라이언트 요구 사항과 나는 그들이 고칠만큼 많이 할 수 없다. ( –

관련 문제