[SPRING] Spring Security Java Config가 로그 아웃 URL을 생성하지 않습니다.
SPRINGSpring Security Java Config가 로그 아웃 URL을 생성하지 않습니다.
나는 Spring 4.0.5.RELEASE와 Spring Security 3.2.4를 사용하고있다.
Java 구성 (스프링 샘플을 기반으로)을 사용하여 간단한 샘플 응용 프로그램을 만들려고합니다. 앱이 시작되고 인증이 올바르게 작동합니다. 즉, 보호 된 url / settings / profile에 액세스 할 때 로그인 양식으로 리디렉션됩니다.
그러나 로그 아웃 URL이 생성되지 않았습니까? localhost : 8080 / logout을 치면 404가됩니다.
이전 프로젝트에서 비슷한 코드를 사용 했으므로 버전과 관련이있을 수 있습니까?
Heres 내 보안 구성
@Configuration
@EnableWebMvcSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication().withUser("user").password("password").roles("USER");
auth.inMemoryAuthentication().withUser("admin").password("password").roles("ADMIN");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/settings/**").hasRole("ROLE_ADMIN")
.and()
.formLogin()
.and()
.logout()
.deleteCookies("remove")
.invalidateHttpSession(true)
.logoutUrl("/logout")
.logoutSuccessUrl("/logout-success")
.permitAll();
}
}
다음은 내 WebAppInitializer가 앱을 부트 스트랩하는 것입니다.
public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class<?>[] { SecurityConfig.class , MvcConfig.class };
}
@Override
protected Class<?>[] getServletConfigClasses() {
return null;
}
@Override
protected String[] getServletMappings() {
return new String[] {"/"};
}
}
마지막으로 내 MvcConfig
@EnableWebMvc
@Configuration
@ComponentScan(basePackages = {"web"})
public class MvcConfig extends WebMvcConfigurerAdapter {
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setViewClass(JstlView.class);
viewResolver.setPrefix("/WEB-INF/views");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
}
해결법
-
==============================
1.기본적으로 POST 요청은 로그 아웃 URL에 필요합니다. GET 요청에서 로그 아웃을 수행하려면 다음이 필요합니다.
기본적으로 POST 요청은 로그 아웃 URL에 필요합니다. GET 요청에서 로그 아웃을 수행하려면 다음이 필요합니다.
http .logout() .logoutRequestMatcher(new AntPathRequestMatcher("/logout"));
PUT 또는 다른 메서드를 지원하려면이 매개 변수로 전달하십시오.
http .logout() .logoutRequestMatcher(new AntPathRequestMatcher("/logout", "PUT"));
문서 도구 : http://docs.spring.io/spring-security/site/docs/3.2.4.RELEASE/reference/htmlsingle/ (6.5.3. 로그 아웃)
from https://stackoverflow.com/questions/24108585/spring-security-java-config-not-generating-logout-url by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링에서 동적으로 빈 참조를 설정하는 방법은? (0) | 2019.01.17 |
---|---|
[SPRING] Spring - application 두 번 초기화 되었습니까? (0) | 2019.01.17 |
[SPRING] 스프링에 편안한 아약스 요청 매핑하기 (0) | 2019.01.17 |
[SPRING] 사용할 내용 플러시 모드 '자동'또는 '커밋' (0) | 2019.01.17 |
[SPRING] Hibernate는 테이블을 자동으로 생성하지 않는다. (0) | 2019.01.17 |