Cohe
Spring Security와 사용자 역할 관리: 오늘의 학습 내용 정리 본문
오늘은 Spring Security를 사용한 사용자 인증 및 권한 관리에 대해 깊이 있게 다뤄보았습니다. 특히 사용자 역할 설정과 관련된 몇 가지 흥미로운 이슈들을 해결하면서 많은 것을 배웠습니다. 이 포스트에서는 오늘 학습한 주요 내용들을 정리해보겠습니다.
1. 사용자 역할 확인 로직
먼저, 사용자의 역할을 확인하는 로직에 대해 알아보았습니다. Spring Security에서는 보통 다음과 같은 방식으로 역할을 확인합니다:
if (!UserRoles.BOSS.contains(loginUser.getRole())) {
// 사용자가 BOSS 역할이 아닐 때의 로직
}
이 코드는 UserRoles.BOSS
가 Set<Role>
타입이고, loginUser.getRole()
이 사용자의 역할을 반환한다고 가정합니다.
2. 사용자 등록(회원가입) 로직
다음으로, 사용자 등록 로직에 대해 심도 있게 살펴보았습니다. 주요 포인트는 다음과 같습니다:
- 이메일, 닉네임, 전화번호의 중복 체크
- 비밀번호 암호화
- 사용자 역할 설정
특히 사용자 역할 설정 부분에서 몇 가지 개선이 필요한 점을 발견했습니다:
if (userRepository.count() == 0) {
user.addRole(UserRoles.USER);
user.addRole(UserRoles.BOSS);
user.addRole(UserRoles.ADMIN);
} else {
user.addRole(UserRoles.USER);
}
이 로직은 첫 번째 사용자에게 모든 역할을 부여하고, 이후 사용자들에게는 USER 역할만 부여합니다.
3. 데이터베이스 제약 조건 오류 처리
마지막으로, 데이터베이스 작업 중 발생할 수 있는 제약 조건 위반 오류에 대해 알아보았습니다. 특히 'user_role_set_chk_1' 제약 조건 위반 오류를 중점적으로 다루었습니다.
이러한 오류를 방지하기 위해서는:
- 사용자 역할 설정 로직을 신중히 검토해야 합니다.
- 데이터베이스 스키마와 애플리케이션 로직이 일치하는지 확인해야 합니다.
- 입력 데이터의 유효성을 철저히 검사해야 합니다.
결론
오늘 학습을 통해 Spring Security를 사용한 사용자 인증 및 권한 관리의 복잡성과 중요성을 다시 한번 실감했습니다. 특히 사용자 역할 관리와 데이터베이스 작업 시 발생할 수 있는 오류 처리의 중요성을 깨달았습니다.
해당 pr을 보시면 작업 내용 전반을 알 수 있습니다 ^^
https://github.com/ToriArtis/2NY-Backend/pull/104
✨Feat: 전체 유저 보여주기 by CheHyeonYeong · Pull Request #104 · ToriArtis/2NY-Backend
2NY ✨Feat: 전체 유저 보여주기 권한 부여 로직 다시 부여 전체 유저 보여주기만 지금은 가능하다 [ { "email": "user@example.com", "password": "$2a$10$FvdvEhJj30SkMIUTkHWRM.Qngfz90...
github.com
해피 코딩하세요! 😊
'Spring, SpringBoot' 카테고리의 다른 글
JWT를 이용한 Spring Security 인증 구현하기 (0) | 2024.08.27 |
---|---|
SpringBoot Project 게시판 만들기 2 (1) | 2024.05.24 |
SpringBoot Project 게시판 만들기 (1) | 2024.05.22 |
MyBatis 스프링 연동 (0) | 2024.04.19 |