[SPRING] 스프링 보안 - 로그 아웃 리디렉션 사용 안함
SPRING스프링 보안 - 로그 아웃 리디렉션 사용 안함
REST와 함께 스프링 보안을 사용하고 있으며, 로그 아웃 메소드의 엔드 포인트로 URL (/ logout)을 사용하고 있습니다. 하지만이 메서드를 호출하면, 그것은 (/ login? logout)로 리디렉션됩니다. 이것이 스프링 logOutSuccessUrl이라는 것을 알고 있습니다. 그리고 리다이렉션을 없애고 싶습니다. 이것은 내 코드입니다.
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/login").permitAll()
.anyRequest().fullyAuthenticated()
.and().requiresChannel().anyRequest().requiresSecure()
.and().httpBasic().disable().logout()
.disable()
// .logoutSuccessHandler(new HttpStatusReturningLogoutSuccessHandler(HttpStatus.OK))
.csrf().disable();
}
HttpStatusReturningLogoutSuccessHandler를 사용하려고했지만 작동하지 않아 logoutSuccessUrl ()을 설정해도 아무 것도 변경되지 않습니다.
이 리디렉션을 어떻게 비활성화 할 수 있습니까?
해결법
-
==============================
1.다음 코드는 나를 위해 작동합니다 (logout (). disable ()이 없음을주의하십시오)
다음 코드는 나를 위해 작동합니다 (logout (). disable ()이 없음을주의하십시오)
http.logout().permitAll(); http.logout().logoutSuccessHandler((new HttpStatusReturningLogoutSuccessHandler(HttpStatus.OK)));
-
==============================
2.그래서 아무 대답도 아직 없기 때문에 나는 저를 위해 일한 나의 해결책을 게시합니다 :
그래서 아무 대답도 아직 없기 때문에 나는 저를 위해 일한 나의 해결책을 게시합니다 :
.logout() .logoutUrl("/api/user/logout") .permitAll() .logoutSuccessHandler((httpServletRequest, httpServletResponse, authentication) -> { httpServletResponse.setStatus(HttpServletResponse.SC_OK); }) .and()
성공적으로 로그 아웃 한 후 깨끗한 HTTP_OK (200) 만 반환하십시오.이 경우 스프링이 리다이렉트하지 않습니다.
-
==============================
3.이 방법을 사용하십시오.
이 방법을 사용하십시오.
.logout().logoutSuccessUrl("enter address here where you want to go after logout")
-
==============================
4.이것을 시험해 볼 수도 있습니다.
이것을 시험해 볼 수도 있습니다.
http.logout (). logoutRequestMatcher (새로운 AntPathRequestMatcher ( "/ thisistomisleadlogoutfilter"));
이것은 효과적으로 / thisistomisleadlogoutfilter를 login? logout으로 리디렉션합니다. 따라서 / 로그 아웃을 대신 사용할 수 있어야합니다.
-
==============================
5.XML 설정을 사용하는 사용자를 푸시하십시오. Tahir Akhtar가 제공 한 것과 동일한 코드 조각이 있습니다.
XML 설정을 사용하는 사용자를 푸시하십시오. Tahir Akhtar가 제공 한 것과 동일한 코드 조각이 있습니다.
요소 내에서 요소를 다음과 같이 구성하십시오. <logout logout-url = "/some/path/for/logout" invalidate-session = "true" delete-cookies = "JSESSIONID" success-handler-ref = "httpStatusReturningLogoutSuccessHandler" />
다음과 같이 httpStatusReturningLogoutSuccessHandler 빈을 정의하십시오.
<bean id = "httpStatusReturningLogoutSuccessHandler" class = "org.springframework.security.web.authentication.logout.HttpStatusReturningLogoutSuccessHandler" />
-
==============================
6.logoutSuccessXXX () 액션의 경우 logout () 메서드가 호출 된 후 쿠키가 지워 지므로 permitAll ()을 추가하는 것을 잊지 마십시오. 그래서 내 샘플 솔루션은 다음과 같습니다.
logoutSuccessXXX () 액션의 경우 logout () 메서드가 호출 된 후 쿠키가 지워 지므로 permitAll ()을 추가하는 것을 잊지 마십시오. 그래서 내 샘플 솔루션은 다음과 같습니다.
http ...... .and() .logout() .logoutUrl("/logout") .logoutSuccessUrl("/logoutSuccess") **.permitAll()**
from https://stackoverflow.com/questions/36354405/spring-security-disable-logout-redirect by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Eclipse가 spring-dwr 스키마를 해석 할 수없는 이유는 무엇입니까? (0) | 2019.05.06 |
---|---|
[SPRING] multipartfile에 @RequestParam을 사용하는 것이 올바른 방법일까요? (0) | 2019.05.05 |
[SPRING] 어노테이션 기반 팩토리 메소드 (0) | 2019.05.05 |
[SPRING] Spring 파일 업로드가 모델 속성 객체에 바인딩되지 않음 (0) | 2019.05.05 |
[SPRING] Heroku에서 gradle로 빌드 된 Spring 애플리케이션 실행 (0) | 2019.05.05 |