Config 설정 후 로그인 페이지
Spring Security Config 클래스 설정 후 특정 경로에 대한 접근 권한이 없는 경우
자동으로 로그인 페이지로 리다이렉팅 되지 않고 오류 페이지가 발생한다.
위 문제를 해결하기 위해 Config 클래스를 설정하면 로그인 페이지 설정도 진행해야 한다.
Security Config 로그인 페이지 설정 및 로그인 경로
package com.gdy.springsecurity.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.web.SecurityFilterChain;
@Configuration //confinguration 컨테이너로 등록
@EnableWebSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception{
http.authorizeHttpRequests((auth) -> auth
.requestMatchers("/", "/login").permitAll() //루트 경로에서 작업 진행
.requestMatchers("/admin").hasRole("ADMIN")
.requestMatchers("/my/**").hasAnyRole("ADMIN","USER")
.anyRequest().authenticated()//위에서 처리하지 못한 경로들 처리하는 메소드
);
http
.formLogin((auth) -> auth.loginPage("/login")
.loginProcessingUrl("/loginProc") //form에서 post로 보내는 action값
.permitAll()
);
http
.csrf((auth)->auth.disable());
return http.build();
}
}
formLogin
폼 로그인 구성을 설정하는 메서드
loginPage()
사용자가 인증되지 않은 경우 리디렉션할 사용자 정의 로그인 페이지를 지정
loginProcessingUrl()
로그인 폼의 제출 url을 지정한다.
html의 form action 태그를 뜻한다.
<form action="/loginProc" method="post" name="loginForm">
<input type="text" id="username" name="username" placeholder="id">
<input type="password" id="password" name="password" placeholder="password">
<input type="submit" value="login">
</form>
permitAll()
로그인 페이지 및 로그인 처리 URL은 모든 사용자에게 허용된다.
결과
1. admin 페이지로 이동하려 한다.
2. admin 역할을 갖고 있지 않으므로 http.formLogin().loginPage("login")을 통해 로그인 페이지로 이동
3. 로그인 시도
4. admin 권한이 아니라 오류가 나지만 이동하긴 함
'🌠Development > SpringBoot' 카테고리의 다른 글
[Spring Security] 06 - 회원가입 로직 (0) | 2024.02.21 |
---|---|
[Spring Security] 05 - BCrypt 암호화 메서드 (0) | 2024.02.21 |
[Spring Security] 03 - Security Config 클래스 (0) | 2024.02.21 |
[Spring Security] 02 - 프로젝트 생성 (0) | 2024.02.19 |
[Spring Security] 01 - 목표 및 동작 원리 (0) | 2024.02.19 |