inflearn logo
강의

Course

Instructor

Spring Boot JWT Tutorial

Introduction to JWT, Creating a Project

유저 권한 설정

Resolved

368

BubblingSODA

4 asked

0

동영상 강의에서 하신대로 @ManyToMany @JoinTable( name = "user_authority", joinColumns = {@JoinColumn(name = "user_id", referencedColumnName = "user_id")}, inverseJoinColumns = {@JoinColumn(name = "authority_name", referencedColumnName = "authority_name")}) private Set<Authority> authorities; 이렇게 할 수 도 있는데  Enum타입으로 하는 방법도 있는것으로 알고있습니다.이렇게 했을 때 두개의 차이점은 뭘까요?! 장단점을 알고싶습니다.제가 생각했을 때는 알려주신 방법은 데이터베이스를 만들어야하니 조인문도 필요할 것 같고 그럼 쿼리가 많이 쌓이게 되면 부하도 커질 것 같고 하지만 한 유저가 여러개의 권한을 가질 수 있다는 장점?이 있을 것 같고제가 말한 enum타입은 쿼리문 작성은 단순해지는 반면 유저가 하나의 권한밖에 못 가지니 그건 상황에 따라 안좋을 수도 잇을 것 같네요 궁금해서 질문 남깁니다. 좋은 강의 감사합니다!!

spring-boot jwt

Answer 2

1

silvernine

안녕하세요! 좋은 질문 감사드립니다!

말씀하신대로 상황에 따라 Enum을 사용하시는 것이 유리할 수 있습니다!

하지만 반대되는 의견들도 있는데요! 관련해서 아래 글을 참고하시면 도움이 되실 것 같습니다.

https://velog.io/@leejh3224/%EB%B2%88%EC%97%AD-MySQL%EC%9D%98-ENUM-%ED%83%80%EC%9E%85%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%98%EC%A7%80-%EB%A7%90%EC%95%84%EC%95%BC-%ED%95%A0-8%EA%B0%80%EC%A7%80-%EC%9D%B4%EC%9C%A0

PS. 저는 꼭 Enum을 쓰지말자! 는 아닙니다. 😄

0

BubblingSODA

답변 감사합니다!!

1

communityai8509

안녕하세요, 인프런 AI 인턴입니다.

님께서 질문하신 @ManyToManyEnum 타입으로 권한을 표현하는 방식의 차이점에 대해 설명드릴게요.

@ManyToMany를 사용한 방법은 하나의 User 엔터티가 여러 개의 Authority를 가질 수 있도록 하는 관계를 명시합니다. 이 방법의 장점은 유연성에 있습니다. 한 유저가 다양한 권한을 가질 수 있고, 시스템이 커지거나 사용자 역할이 복잡해질 경우에도 대응하기 쉽습니다. 하지만, 조인 테이블을 두고 관리해야 하므로, 데이터베이스의 복잡성이 증가하고, 조인 쿼리에 의한 부하가 커질 가능성이 있습니다.

반면에, Enum 타입을 사용하는 방식은 열거형을 통해 미리 정의된 권한만을 부여할 수 있습니다. 이 방식의 장점은 구현의 단순함에 있으며, 쿼리가 단순해진다는 점에서 성능적인 이점을 가질 수 있습니다. 다만, 유저가 단 하나의 권한만 가진다는 뜻이므로, 유연성이 상대적으로 떨어집니다. 권한 관리가 단일 차원으로 이루어져 향후 확장이나 변경이 필요할 때 구조를 바꾸는 데 제약이 있을 수 있습니다.

실제 사용 시에는 어플리케이션의 요구사항, 성능 및 유지보수의 측면을 고려하여 적합한 방법을 선택하는 것이 중요합니다.

좋은 강의라고 말씀해주셔서 감사합니다. 다른 궁금한 점이 있으면 언제든 질문해주세요. BubblingSODA님의 개발 학습에 도움이 될 수 있도록 노력하겠습니다.

0

BubblingSODA

좋은 답변 감사합니다!!!

spring boot 3.x 버전 강의도 만들어주시면 안될까요?

0

67

1

3강 secret key 관련해서 질문있습니다

0

67

1

JwtFilter 에 TokenProvider 선언 시 final 키워드 빠진 이유

0

76

1

/api/authenticate 포스트맨 401 에러

0

223

1

Spring boot 3.x버전에서 data.sql 오류 발생할 경우

4

399

1

/api/hello 접근 시 401 나올 때 해결법

2

303

2

소스코드 전체 볼수 있을까요?

0

397

2

머이렇게 안되는게많노 ㅠ

1

757

2

스프링부트 3.x 버전 data.sql 삽입 오류 발생할 경우 해결 방법

6

1351

2

postman 결과가 다릅니다

0

355

2

body값이 비었습니다.

0

399

2

jjwt 버전을 올렸더니 jwt가 유효하지 않다고 합니다

0

3594

1

Refresh Token

0

506

1

setAuthentication

0

496

1

postman에서 오류가 납니다..

0

1768

3

Spring boot 3.1.5 기준 학습 정리 파일 공유

1

1086

4

/api/hello에 접근이 안됩니다 ㅠㅠ

0

1082

2

mysql 설정로 실습시

0

873

2

유효한 JWT 토큰이 없습니다

0

667

2

8:45 spring security 3.1.5 설정 방법 (버전 안 맞춰서 안될때)

1

2279

2

2:00 에서 저처럼 버전 안 맞춰서 해서 헤매는 분들 이걸로 해보세요.

0

1275

3

JWT String argument cannot be null or empty.

0

2159

2

new User 생성자 오류 발생하는 분들...

6

501

2

requestMatchers 관련 에러 뜨시는 분들 참고하세요

6

2599

3