하늘 님이 쓰신 글 :
: 까막 님이 쓰신 글 :
: : 하늘 님이 쓰신 글 :
: : : 궁굼한게 하나 있어서 이렇게 올립니다
: : : 1. 프로그램에 로그인하고 메인메뉴에 메뉴들을 사용자에 따라서 가능,불가능으로
: : : 분류하고 싶어서요 제가 생각한것은 사용자관련 테이블에서 그 사용자의 특정
: : : 필드에(만약 메뉴가 20개일때) 20칸짜리 필드를 만들고 거기에 1번프로그램의 권한
: : : 이 있으면 100000000...나머지 19개는 0으로 채우고 1번과 5번 프로그램에 권한이
: : : 있으면 10001000...이렇게 표시할까 하는데 아무래도 초보다 보니까 고수님들의 의견
: : : 을 듣고 싶어서요 어떻게 구성하시나요?
: : : 이 방법은 프로그램의 본수가 늘어나면 좀 문제가 생기는 방법인데 ㅜㅜ
: : :
: : : 고수님들의 고견 부탁 드려요^^
: :
: : 안녕하세요. 까막입니다.
: :
: : Database 에서 역할 관리 아시죠? Role.
: : 그것과 비슷하게 만드시는게 좋으실 겁니다.
: : 쓰다보면 사용자에게 메뉴 할당을 새롭게 해 주실 수도 있으니까요.
: :
: : 먼저 Role 을 만드시고, 그 Role(역할) 에 사용자를 할당하시고요.
: : 각 역할별로 사용가능한 메뉴를 할당하시면 됩니다.
: :
: : 그리고, 로그인시에 사용자 아이디에 따라서 부여된 역할에 할당된 메뉴를 활성화시키도록 하세요.
: :
: :
: : 추신.
: : 진짜 Role 을 만드시라는게 아니라, 그런 기능을 하도록 만드시라는 겁니다. 혹시 오해가 있을까봐... ^^
: : 대략 필요한게, 사용자 정보 테이블, Role 기능을 하는 테이블, 각 Role 에 메뉴 부여 정보를 저장하는 테이블,
: : 조회하는 뷰나 프로시져 등이겠네요.
: :
: :
: :
: : 위대한 단군혼이 살아있는 나라.... 대한민국.
: 까막님 답변 감사합니다 ^^
: 그런데 제가 Role의 개념이 없어서 그런데 만약 A테이블에 a-1필드에 프로그램 번호를 넣고 a-2필드에
: 그 프로그램을 사용하수 있는 사용자를 넣으라는 말 이신가요? 아직 개념이 없어서요 ㅜㅜ
: 로그인 되는 사람은 한 600명 정도 됩니다 프로그램 수는 한50개 정도 됩니다
: 조송하지만 조금 쉽게 설명이 가능하신가요? 부탁 드립니다 ㅜㅜ
안녕하세요. 까막입니다.
Operator Table 생성 - 사용자 정보.
__OperatorId - 사용자코드.
__OperatorName - 사용자명.
__PW - 비번.
Roles Table 생성 - 역할.
__RolesId - 역할코드.
__RolesName - 역할명.
RelesMember Table 생성 - 역할 구성원.
__RolesId - 역할코드.
__OperatorId - 사용자코드.
SelectRun Table 생성 - 메뉴 실행 관리.
__RolesId - 역할코드.
__MenuId - 메뉴코드.
__FlagRun - 실행여부. 0 : 불가 1 : 가능.
이런 식으로 테이블을 구성하시고요.
Operator Table 에는 사용자를 넣으셔야 겠죠.
600명이라면 600명을 다 넣으셔야 하겠죠?
A001 - 1번 사용자, A002 - 2번 사용자...
Roles Table 에는 조건에 맞는 역할을 만드시면 됩니다.
예를 들면,
__RootManager 최고 관리자 역할.
__Viewer 조회폼 실행 권한 역할.
이런 식으로, 목적에 맞는 역할을 만드시고요.
RolesMember Table 에는 해당 역할의 성격에 맞는 사용자를 등록하시면 되겠네요.
__RootManager - A001 : A001 사용자는 최고 관리자 역할을 가진다.
__Viewer - A001,A002 : A001 과 A002 사용자는 조회폼 실행 권한 역할을 가진다.
SelectRun Table 에는 각 역할에서 실행가능한 메뉴를 등록하셔야 겠죠.
__RootManager - Menu001, Menu003 : 최고 관리자 역할은 Menu001,003 을 실행 가능하다.
__Viewer - Menu002, Menu004, Menu005 : 조회폼 생행 역할은 Menu002,004,005 를 실행 가능하다.
이런 식으로 등록이 되어 있으면,
A001 아이디로 로그인하면 Menu001~005 를 전부 실행가능하고요.
A002 아이디로 로그인하면 Menu002,004,005 만 실행가능하겠죠.
물론 로그인시의 아이디로 해당 아이디가 등록된 역할들을 가져오고,
그 역할에 부여된 메뉴 아이디를 가져와서 해당 되는 메뉴만 활성화 시키고,
나머지는 비활성화 시키면 되겠죠.
이 방식은 Role 개념에서 보면, Grant 개념만 있다고 보시면 됩니다.
더 세밀하게 구현한다면, Deny, Revoke 도 구현이 되어야 겠지만.., 뭐 거기까지는 필요 없을 것 같군요.
더 욕심을 낸다면 각 메뉴에서도 등록/수정/삭제/조회 권한등을 별도로 지정할 수도 있겠죠.
위 설명은 Table 개념 정도만 적은거고요.
각 테이블의 데이터 입력/수정/삭제 화면은 별도로 구성을 하셔야 겠죠.
위대한 단군혼이 살아있는 나라.... 대한민국.
|