728x90
초기에 백엔드 개발을 배울 때 했던 건데 다시 하려니까 기억이 잘 안나서 다시 정리하려고 한다.
1. 의존성 주입
implementation 'org.springframework.boot:spring-boot-starter-security'
2. PasswordEncoder @Bean으로 등록
* Bean으로 등록하지 않으면 아래와 같은 오류가 난다.
Description:
Parameter 1 of constructor in com.sj.Petory.domain.member.service.MemberService required a bean of type 'org.springframework.security.crypto.password.PasswordEncoder' that could not be found.
Action:
Consider defining a bean of type 'org.springframework.security.crypto.password.PasswordEncoder' in your configuration.
3. passwordEncoder 인터페이스 이용해 암호화
MemberService.java
public class MemberService {
private final MemberRepository memberRepository;
private final PasswordEncoder passwordEncoder;
public boolean signUp(SignUp.Request request) {
checkEmailDuplicate(request.getEmail());
checkNameDuplicate(request.getName());
request.setPassword(
passwordEncoder.encode(request.getPassword()));
memberRepository.save(request.toEntity());
return true;
}
접속하면 기본 로그인 페이지가 뜨는데
username : user
password : 프로젝트 실행 시 콘솔에 뜨는 임시 비밀번호
로 로그인이 가능하다.
근데 나는 user로 로그인이 안 되서 아래와 같이 application.yml에 설정해주었다.
spring:
security:
user:
name: a
password: a
음 근데 이것도 안 되네
어차피 SecurictyConfig 설정하면서 없애줄 것이기 때문에 아래와 같이 작성한다.
package com.sj.Petory.config;
import org.springframework.boot.autoconfigure.security.servlet.PathRequest;
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.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.web.SecurityFilterChain;
import static org.springframework.security.config.Customizer.withDefaults;
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public BCryptPasswordEncoder bCryptPasswordEncoder() {
return new BCryptPasswordEncoder();
}
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.csrf((csrfConfig) ->
csrfConfig.disable()
)
.headers((headerConfig) ->
headerConfig.frameOptions(frameOptionsConfig ->
frameOptionsConfig.disable()
)
)
.authorizeHttpRequests((authz) ->
authz
.requestMatchers(PathRequest.toH2Console()).permitAll()
.anyRequest().permitAll()
);
return http.build();
}
}
이전과 구조가 많이 달라진 것 같아서 공부를 해서 다시 정리해야겠다 !
다음 포스팅에서 Spring Security 정리하겠다.
참고
BCryptoEncoder Bean 등록
https://thalals.tistory.com/301
Spring Security 기본 로그인 화면 없애기
공식문서
https://spring.io/blog/2022/02/21/spring-security-without-the-websecurityconfigureradapter
728x90
'공부 > Spring Boot' 카테고리의 다른 글
Spring Security + JWT 인증 인가 구현하기(로그인 API, 인증이 필요한 API) (0) | 2024.08.16 |
---|---|
Spring Boot 3.x 버전에서 Spring Security 적용기 (2) | 2024.08.13 |
SpringBoot 3.x 버전에서 RestDocs + SwaggerUI 사용하기 (0) | 2024.08.01 |
OpenAPI 데이터 받아오기 (0) | 2023.09.29 |
JPA를 이용해서 MySQL에 데이터 저장하기 (0) | 2023.09.27 |