1. Spring Security 의존성 추가
- build.gradle
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-security'
}
2. Config 설정
- Security.java
@Configuration
public class SecurityConfig {
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}
3. 암호화 방법
dto로 회원 정보를 받았고, SignUpDto에 password를 포함한 다른 회원 관련 필드가 정의되어있다고 가정하면
passwordEncoder.encode()를 사용해 암호화를 해주면 된다.
@Service
@RequiredArgsConstructor
public class MemberService {
private final MemberRepository memberRepository;
private final PasswordEncoder passwordEncoder;
@Transactional
public void signUp(SignUpDto signUpDto) {
// 비밀번호 암호화
String encryptedPassword = passwordEncoder.encode(signUpDto.getPassword());
// 기타 회원정보 저장 로직...
// setter 또는 builder로 암호화된 비밀번호 저장
member.setPassword(encryptedPassword);
memberRepository.save(member);
}
4. 로그인 시 비밀번호 일치하는지 확인하는 방법
passwordEncoder.matches()를 사용한다.
@Transactional(readOnly = true)
public String login(LoginDto loginDto) {
String password = loginDto.getPassword();
if (!passwordEncoder.matches(password, member.getPassword())) {
throw new IllegalArgumentException("로그인 정보가 일치하지 않습니다.");
}
// ...
}
+ Spring Security 기본 로그인 페이지 비활성화하기 !!
build.gradle에 Spring Security 의존성을 추가하면 스프링에서 제공하는 기본 로그인 페이지가 자동으로 추가된다.
이 화면 대신 내가 만든 로그인 페이지를 사용하려면
메인 클래스에서 @SpringBootApplication(exclude = SecurityAutoConfiguration.class)를 추가해주면 된다.
@SpringBootApplication(exclude = SecurityAutoConfiguration.class)
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
'BackEnd > spring' 카테고리의 다른 글
| IntelliJ에서 yml 파일 관리하기: .gitignore와 환경변수 (0) | 2024.05.11 |
|---|---|
| Spring Boot에서 JSP 사용하기 (0) | 2024.05.05 |
| CSRF / JWT / CSRF 토큰과 JWT의 차이점 (0) | 2023.08.09 |
| Spring Security란? (0) | 2023.08.09 |
| [Spring Boot] Spring Security를 사용하여 권한 설정하는 방법 (0) | 2023.07.25 |