Cohe

Spring Security와 사용자 역할 관리: 오늘의 학습 내용 정리 본문

Spring, SpringBoot

Spring Security와 사용자 역할 관리: 오늘의 학습 내용 정리

코헤0121 2024. 8. 27. 17:06
728x90

오늘은 Spring Security를 사용한 사용자 인증 및 권한 관리에 대해 깊이 있게 다뤄보았습니다. 특히 사용자 역할 설정과 관련된 몇 가지 흥미로운 이슈들을 해결하면서 많은 것을 배웠습니다. 이 포스트에서는 오늘 학습한 주요 내용들을 정리해보겠습니다.

1. 사용자 역할 확인 로직

먼저, 사용자의 역할을 확인하는 로직에 대해 알아보았습니다. Spring Security에서는 보통 다음과 같은 방식으로 역할을 확인합니다:

if (!UserRoles.BOSS.contains(loginUser.getRole())) {
    // 사용자가 BOSS 역할이 아닐 때의 로직
}

이 코드는 UserRoles.BOSSSet<Role> 타입이고, loginUser.getRole()이 사용자의 역할을 반환한다고 가정합니다.

2. 사용자 등록(회원가입) 로직

다음으로, 사용자 등록 로직에 대해 심도 있게 살펴보았습니다. 주요 포인트는 다음과 같습니다:

  1. 이메일, 닉네임, 전화번호의 중복 체크
  2. 비밀번호 암호화
  3. 사용자 역할 설정

특히 사용자 역할 설정 부분에서 몇 가지 개선이 필요한 점을 발견했습니다:

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' 제약 조건 위반 오류를 중점적으로 다루었습니다.

이러한 오류를 방지하기 위해서는:

  1. 사용자 역할 설정 로직을 신중히 검토해야 합니다.
  2. 데이터베이스 스키마와 애플리케이션 로직이 일치하는지 확인해야 합니다.
  3. 입력 데이터의 유효성을 철저히 검사해야 합니다.

결론

오늘 학습을 통해 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

 

 

해피 코딩하세요! 😊