해결된 질문
작성
·
383
0
안녕하세요! Spring Security 적용하는 강의를 보면서 제가 사용하는 스프링 버전에 맞춰서 진행을 하고 있는데 defaultSuccessUrl 설정하는 부분에서 오류가 발생하여 해결을 하긴 했으나, 이상한 것 같아서 질문 드립니다.
기본적으로 SecurityConfig.java
코드는 다음과 같이 동일하게 작성해주었습니다.
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
return http
.csrf(AbstractHttpConfigurer::disable)
.authorizeHttpRequests(registry -> registry
.requestMatchers("/auth/login").permitAll()
.anyRequest().authenticated())
.formLogin(configurer -> configurer
.loginPage("/auth/login")
.loginProcessingUrl("/auth/login")
.usernameParameter("username")
.passwordParameter("password")
.defaultSuccessUrl("/"))
.userDetailsService(userDetailsService())
.build();
}
다음과 같이 Bean 등록을 통해 로그인을 성공하였을 경우, "/"
경로의 Controller를 호출하게 될 줄 알았습니다. 하지만, 다음과 같이 405 에러가 발생했습니다.
이상해서 로그를 살펴보니 Request received for POST '/' ...
라는 로그가 보입니다.
그렇다보니, 제가 작성한 MainController에 있는 @GetMapping("/")
이 요청을 처리하지 않아요.
@RestController
public class MainController {
@GetMapping("/")
public String main() {
return "This is Main Page!!";
}
}
@PostMapping
으로 변경하여 진행을 하였을 경우 정상적으로 반환이 되기는 합니다.
하지만 호돌맨님 강의에서는 Get 요청으로 받았고 정상적으로 처리가 되었지만, Post로 받아야 하는지 모르겠어서 질문 남깁니다..
혹시 제가 잘못한 부분이 있다면 알려주시면 감사하겠습니다! 깃허브 주소는 아래에 남겨두겠습니다.
깃허브 repository : https://github.com/f1v3-log/f1v3-back
답변 1
1
안녕하세요. 호돌맨입니다.
(질문자님과 다른 채널을 통해 해결을 진행했습니다.)
문제는 Intellij 2024.1 부터 발생하는 버그입니다.
POST료 요청을 보내고 만약 응답으로 302 (리다이렉션)이 온다면 GET이 아닌 POST로 redirect되는 버그입니다.
Intellij 버그 리포트에 올라왔으며 2024.1.2에 수정될 예정입니다.
귀신씐 코드인줄 알고 넘 웃기고 재미있었네요
감사합니다.