0. 프로젝트 소개(Spring Security) 및 Security에 대하여
1. User Entity 생성(Spring Security)
2. User 회원가입 (Spring Secureity)
3.Jwt의 사용 이유 (Spring Security)
4. Authorization(인증)
- 4-0 Authorization(인증) - 프로세스 설명
- 4-1 Authentication(인증) - UserDetails, UserDetailsService 및 JwtService 생성
- 4-2 Authentication(인증) - UsernamePasswordAuthenticationfilter 생성
- 4-3 Authentication(인증) - CorsFilter(선택사항)
- 4-4 Authentication(인증) - SecurityConfig
5. Authorization(인가)
- 5-1 Authorization(인가) - Jwt 인가 관련 에러 처리
- 5-2 Authorization(인가) - Jwt 인가 서비스 로직 추가
- 5-3 Authorization(인가) - AuthorizationFilter 생성
- 5-4 Authorization(인가) - SecurityConfig에 인가 관련 method 추가
6. OAuth
UserSignupDto 생성
/**
* @package com.example.spring_security.user.dto
* @class UserSignupDto
* @brief 회원가입 Dto
* @author 최원호
* @date 2023.06.22
* version 1.0
*/
public class UserSignupDto {
@Getter
public static class UserSignupRequestDto {
private String email;
private String password;
private String nickname;
}
public static class UserSignupResponseDto {
private long userId;
private String email;
private String password;
private String refreshToken;
private String userRole;
}
}
- 비즈니스 로직에서 사용할 Dto를 구현한다.
UserService생성
/**
* @package com.example.spring_security.user.service
* @interface UserServiceIMpl
* @brief UserService 상속 클래스
* @author 최원호
* @date 2023.06.22
* version 1.0
*/
@Slf4j
@Service
@RequiredArgsConstructor
public class UserServiceImpl implements UserService {
private final UserRepository userRepository;
private final BCryptPasswordEncoder bCryptPasswordEncoder;
/**
* @brief user 정보 저장
* @param userSignupRequestDto 회원가입 요청 Dto
*/
@Override
@Transactional
public void insertUser(UserSignupRequestDto userSignupRequestDto) {
User user = User.builder()
.email(userSignupRequestDto.getEmail())
.password(userSignupRequestDto.getPassword())
.nickname(userSignupRequestDto.getNickname())
.socialType(SocialType.NONE)
.build();
user.passwordEncode(bCryptPasswordEncoder);
userRepository.save(user);
}
}
비밀번호 Encoding
user.passwordEncode(bCryptPasswordEncoder);
- DB에 암호화하여 비밀번호를 저장하여 관리자도 비밀번호를 조회할 수 없도록 encoding해준다.
결과
password를 평문으로 API에 보내면 DB 저장시 Encoding되어 저장된다.
'SpringBoot Security' 카테고리의 다른 글
4-1 Authentication(인증) - UserDetails, UserDetailsService 및 JwtService 생성 (0) | 2023.07.09 |
---|---|
4-0 Authorization(인증) - 프로세스 설명 (0) | 2023.07.08 |
3. Jwt의 사용 이유 (Spring Security) (0) | 2023.06.28 |
1. User Entity 생성(Spring Security) (0) | 2023.06.25 |
0. 프로젝트 소개(Spring Security) 및 Security에 대하여 (0) | 2023.06.24 |