2011-01-14 2 views
4

이전의 I asked 스프링 보안 2의 폼 로그인 페이지에서 원래 요청 URL을 얻을 수 있다면 실제로 도움이되지 않습니다. 나에게 필요한 것은 form-login 페이지로의 리다이렉트를 요청 파라미터로 포함시키기 위함이다.스프링 보안을 사용하여 로그인 페이지의 쿼리 문자열에 url 반환을 추가하십시오.

<form-login login-page="/login.html" /> 

을 내가 /login.html?return_to=/secure.html에서 생을 마감 할 액세스 /secure.html하려고 : 그래서 나는 경우.

+0

하고 작동 : 를 https://stackoverflow.com/questions/34087954/ 비밀번호 보안 방법 - 추가 - 리디렉션 - 쿼리 - 매개 변수 - 로그인 - 허용 - 허용 URL –

답변

7

을 당신은 추가해야합니다 AuthenticationEntryPoint. Spring Security 3.0+의 경우 보통 LoginUrlAuthenticationEntryPoint의 인스턴스가됩니다. 2.0에서 해당 클래스는 AuthenticationProcessingFilterEntryPoint입니다.

진입 점은 요청 캐싱을 담당하는 ExceptionTranslationFilter에 의해 호출됩니다. 따라서 사용자 정의 AuthenticationEntryPoint을 작성하여 추가 매개 변수가 추가 된 로그인 페이지 URL로 리디렉션합니다 (현재 요청 URI 포함). 코드는 표준 구현과 거의 동일해야합니다.

http 네임 스페이스 요소의 entry-point-ref 특성을 사용하여 네임 스페이스 구성에 사용자 지정 AuthenticationEntryPoint를 삽입 할 수 있습니다. 일반 콩을 사용하는 경우 ExceptionTranslationFilter에 주입합니다.

+0

이것은 올바른 대답처럼 들리지만, 나는이 길로 향했다. 그러나 뭔가가 나를 위해 일하지 않는 것처럼 보였다. 내가 다른 것을 발사해야 할 것 같은데. –

9

spring-security-redirect을 사용해야합니다. 기본적으로 URL이 /login.html?spring-security-redirect=/secure.html 인 경우, 성공적인 로그인시 스프링 보안이 자동으로 secure.html로 리디렉션됩니다.

봄 3.1.x부터는 더 이상 사용하지 않습니다. 당신의 < 폼 로그인 > 요소에

authentication-success-handler-ref="simpleUrlAuthenticationSuccessHandler" 

을 ... 그리고처럼 보이는 빈 추가 : 로그인 양식으로 리디렉션이 수행됩니다

<!-- Emulates the functionality of spring security 3.0.x by specifying the targetUrlParameter to be the value it 
    defaulted to in 3.0.x. As of 3.1.x this is null by default with no option to specify in <form-login> --> 
<beans:bean id="simpleUrlAuthenticationSuccessHandler" class="org.springframework.security.web.authentication.SimpleUrlAuthenticationSuccessHandler"> 
    <beans:property name="useReferer" value="true"/> 
    <beans:property name="defaultTargetUrl" value="/account"/> 
    <beans:property name="targetUrlParameter" value="spring-security-redirect"/> 
</beans:bean> 
+0

** 로그인 후 ** 거기에 가고 싶지 않습니다. 해당 URL을 매개 변수로 추가 한 로그인 양식. –

+0

화려한! 정확히 내가 뭘 찾고 있었는지, 고마워. –

0

로그인 페이지를 사용하고 Raghuram 접근 방식을 사용하려는 경우 targetUrlParameter 이름이 인 숨겨진 필드를 양식에 삽입해야한다고 제안했습니다. 귀하의 예를 들어

(예 : * return_to * URL 매개 변수를 사용하여.) 뭔가처럼 될 것입니다 :이 솔루션을 시도

<input type="hidden" name="spring-security-redirect" value="<c:out value="${param.return_to}" escapeXml="true" />" /> 
관련 문제