인증/인가 API
1. 인증/인가 API 코드
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain fileterChain(HttpSecurity http) throws Exception {
http
.exceptionHandling(auth -> //예외처리 기능이 작동함
auth
.authenticationEntryPoint((request, response, authException) -> {
// 인증 예외 처리
response.sendRedirect("/login ");
})
.accessDeniedHandler((request, response, accessDeniedException) -> {
// 인가 예외 처리
response.sendRedirect("/denied" );
})
);
http
.formLogin()
.successHandler((request, response, authentication) -> {
// 인증예외가 발생하기 전, 요청 정보를 저장
RequestCache requestCache = new HttpSessionRequestCache();
//사용자의 이전 요청 정보를 세션에 저장하고 이를 꺼냄
SavedRequest savedRequest = requestCache.getRequest(request, response);
//사용자가 요청했던 request 파라미터 값(그 당시의 헤더값들 등)
String redirectUrl = savedRequest.getRedirectUrl();
//사용자가 원래 가고 싶었던 페이지 경로
response.sendRedirect(redirectUrl);
//인증에 성공하고 나서 바로 그 이전의 정보를 가져와서 바로 이동하도록 처리
});
return http.build();
}
}
2. 인증/인가 예외 처리
- 인증 예외 처리
- 로그인 페이지이동, 401 오류 코드 전달 등
- 인가 예외 처리
- user 만 갈 수 있는 페이지를 admin이 접근할 경우 “인가 예외”가 터진다.
Comments