cornarong
85
2021-10-12 00:18:40
2
124

스프링 시큐리티 hierarchy 설정 시, 사용자와 권한의 테이블 구조? 궁금합니다..


안녕하세요. 스프링 시큐리티를 공부해보면서 제 프로젝트에 적용해보고 있습니다.


현재 JPA를 사용하여 user(사용자엔티티) / user_role(매핑테이블) / role(권한엔티티)

이러한 구조로 사용자와 권한의 테이블을 구현했습니다.


권한의 이름은 관리자, 매니저, 회원 .. 이렇게 구현되어 있고 (3가지 입니다)

url로 인가를 처리하도록 구현하고 있습니다..


질문의 내용은

제가 스프링 시큐리티의 hierarchy(권한 계층)을 사용해보기 위해서 적용하다가

문득 드는 생각이..

제 프로젝트의 권한 구조라면 hierarchy를 적용시키면 [관리자>매니저>유저] 가 될텐데..

그뜻은 즉, 그냥 유저당 하나의 권한 만 주게되면 싱글테이블로 관리가 되지 않을까? 라는 궁금증이 생겼습니다. 


만약 이렇게 된다면 그냥 user테이블의 권한 컬럼을 추가하여 한개의 권한만 주어도 되지 않을까요?

너무 간편해지는데 이게 맞나 싶어서 질문드립니다.. 


답변해주시면 감사하겠습니다.

0
  • 답변 2

  • Mambo
    7k
    2021-10-12 06:47:34

    네 상관없어요.

    스프링 시큐리티는 권한 개념을 추상화한 것이지 테이블 구조를 강제하진 않아요.

    말씀하시는 권한 계층은 서버 단에서 처리하는 것이지 애초에 DB 테이블 구조와는 관계가 없어요.

  • cornarong
    85
    2021-10-12 15:37:31 작성 2021-10-12 15:41:31 수정됨

    Mambo

    아, 감사합니다. 선생님!

    혹시 가능하시다면 한가지만 더 여쭈어봐도 될까요.?


    권한이 일반적으로 다양하지 않은 구조에서는, 예를들어 제 것과 같이 -> 관리자/매니저/회원 일 경우.

    선생님과 같은 경력분들은 어떤식으로 구현하실지 궁금합니다..


    1. 일반적으로 간단한 권한의 구조에서 하이라키를 적용 시키는게 좋을지.

    (최상위 계층부터 관리자 > 매니저 > 회원 이렇게 싱글테이블로 처리한다.

    유저 테이블에 권한컬럼이 추가되어 한개의 권한은 주어지면 된다.)


    2. 아니면 일반적으로 회원/회원_권한/권한 이렇게 중간에 회원_권한(매핑테이블)을 구현하여

    각 회원당 역할에 맞게 주시는지..

    (최상위 관리자는 모든 권한을 가지고 있다. = 관리자/매니저/회원 -> 이렇게 총3개의 권한을 갖고

    매니저는 = 매니저/회원 -> 이렇게 2개의 권한을 가지고 있으며

    회원은 = 회원 -> 이렇게 1개의 권한만 가지고 있는 구조. )


    위의 답변 정말 감사드립니다!!


  • 로그인을 하시면 답변을 등록할 수 있습니다.