728x90
320x100
- Security 라이브러리를 등록하면 인증되지 않은 모든 사용자를 /login 으로 redirection 됨
- 상태 코드 302 = redirect
- SecurityConfig를 통해 설정해줌
📌 SecurityConfig 세팅
package yerong.InstagramCloneCoding.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
@EnableWebSecurity
@Configuration
public class SecurityConfig{
@Bean
public SecurityFilterChain filterChain (HttpSecurity http) throws Exception{
return http
.authorizeHttpRequests(authorizationRequest ->
authorizationRequest
.requestMatchers(
AntPathRequestMatcher.antMatcher("/"),
AntPathRequestMatcher.antMatcher("/user/**"),
AntPathRequestMatcher.antMatcher("/image/**"),
AntPathRequestMatcher.antMatcher("/subscribe/**"),
AntPathRequestMatcher.antMatcher("/comment/**")
).authenticated()
.anyRequest().permitAll()
)
.formLogin(formConfig ->
formConfig.loginPage("/auth/signin")
.defaultSuccessUrl("/"))
.build();
}
}
1. @EnableWebSecurity
- 해당 파일로 Security를 활성화해줄 것임을 나타냄
2. @Configuration
- IoC에 등록 ➡️ 메모리에 뜸
3. Security6 부터는 이런 형식으로 변경됨
@Bean
public SecurityFilterChain filterChain (HttpSecurity http) throws Exception{
return http.build();
}
4. url에 권한을 줌
.authorizeHttpRequests(authorizationRequest ->
authorizationRequest
.requestMatchers(
AntPathRequestMatcher.antMatcher("/"),
AntPathRequestMatcher.antMatcher("/user/**"),
AntPathRequestMatcher.antMatcher("/image/**"),
AntPathRequestMatcher.antMatcher("/subscribe/**"),
AntPathRequestMatcher.antMatcher("/comment/**")
).authenticated()
.anyRequest().permitAll()
)
- authenticated() : 인증이 필요함(403 error)
- anyRequest().permitAll() : 그 외의 모든 요청은 모두 허용
5. 인증이 필요한 페이지에 들어가면(403) 로그인 창으로 redirect 해줘야 함
.formLogin(formConfig ->
formConfig.loginPage("/auth/signin")
.defaultSuccessUrl("/"))
- 권한이 없는 페이지들은 로그인 페이지로 넘겨줌
- 로그인에 성공했다면 "/" 로 redirect
반응형
PREV
NEXT
728x90
반응형
'프로젝트 > 인스타그램 클론 코딩' 카테고리의 다른 글
[인스타그램 클론 코딩][Spring boot] 6. 구독하기 (0) | 2024.02.19 |
---|---|
[인스타그램 클론 코딩][Spring boot] 5. 회원 정보 수정 (1) | 2024.02.19 |
[인스타그램 클론 코딩][Spring boot] 4. 로그인 구현 (1) | 2024.02.18 |
[인스타그램 클론 코딩][Spring boot] 3. 회원 가입 구현 (1) | 2024.02.17 |
[인스타그램 클론 코딩][Spring boot] 1. 프로젝트 설정 (0) | 2024.02.14 |