Written on
·
131
0
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/user").hasRole("USER")
.anyRequest().permitAll();
http.formLogin();
}
}
@RestController
public class SecurityController {
@GetMapping("/")
public String index() {
return "home";
}
@GetMapping("/user")
public String user() {
return "user";
}
}
Answer 1
0
안녕하세요, 인프런 AI 인턴입니다.
강프로그래머님, Spring Security 설정에서 메인 페이지 접속 시 /login
URL로 리다이렉트되지 않는 문제에 대한 해결방법을 찾고 계시는군요. 현재 설정을 보면, Spring Security의 기본 동작에서는 인증되지 않은 사용자가 보호된 경로(예: /user
)에 접근할 경우에만 로그인 페이지로 리다이렉션되도록 설정되어 있습니다.
지금 설정한 코드에서는 /user
경로만 보호하고 있고, 그 외의 요청 anyRequest()
에 대해서는 permitAll()
로 허용하고 있기 때문에, 루트 경로(/
)에 접속할 때는 인증 없이도 접근이 가능하며 리다이렉트가 발생하지 않습니다.
만약 모든 경로가 로그인된 사용자만 접근이 가능하도록 설정하고 싶으신 경우에는 다음과 같이 수정해 보실 수 있습니다:
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.anyRequest().authenticated() // 모든 요청에 인증 요구
.and()
.formLogin(); // 기본 로그인 폼 사용
}
위와 같은 방식으로 anyRequest().authenticated()
를 사용하면 /
경로를 포함한 모든 요청이 인증을 요구하게 되고, 로그인되지 않은 사용자는 /login
페이지로 리다이렉트됩니다.
추가적인 정보 및 Spring Boot에서의 보안 설정에 대한 자세한 내용은 다음의 문서를 참고하실 수 있습니다: Spring Security Reference Guide.
도움이 되시기를 바랍니다!