Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[11339] Re:Re:Re:[질문] 메뉴의 권한설정
까막 [ggamagui] 1820 읽음    2007-05-16 17:33
하늘 님이 쓰신 글 :
: 까막 님이 쓰신 글 :
: : 하늘 님이 쓰신 글 :
: : : 궁굼한게 하나 있어서 이렇게 올립니다
: : : 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 개념 정도만 적은거고요.
각 테이블의 데이터 입력/수정/삭제 화면은 별도로 구성을 하셔야 겠죠.



위대한 단군혼이 살아있는 나라.... 대한민국.

+ -

관련 글 리스트
11336 [질문] 메뉴의 권한설정 하늘 1565 2007/05/16
11337     Re:[질문] 메뉴의 권한설정 까막 1693 2007/05/16
11338         Re:Re:[질문] 메뉴의 권한설정 하늘 1539 2007/05/16
11339             Re:Re:Re:[질문] 메뉴의 권한설정 까막 1820 2007/05/16
11340                 Re:Re:Re:Re:[질문] 메뉴의 권한설정 하늘 1599 2007/05/16
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.