인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

Inflearn Community Q&A

daycoding's profile image

asked

Spring Security

9) Understanding authorization concepts and filters: Authorization, FilterSecurityInterceptor

메인 페이지로 접속해도 login url로 리다이렉트가 되지 않습니다..

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";
    }
}

 

javaspring-bootspring-security

Answer 1

0

communityai8509님의 프로필 이미지

안녕하세요, 인프런 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.

도움이 되시기를 바랍니다!