권한 시스템 설계 (메뉴)
먼저 데이터베이스 테이블 구조:
사용자 테이블 TUSER(USERID NUMBER,NAME VARCHAR2(63),PWD VARCHAR2(127))
캐릭터 리스트 TROLE(ROLEID NUMBER,NAME VARCHAR2(63))
사용자 역할 관계 표 TUSER_ROLE(USERID NUMBER,ROLEID NUMBER)
메뉴 표 TMENU(MENUID NUMBER,MENUNAME VARCHAR2(30),URL VARCHAR2(128),MODULE VARCHAR2(50),PERMISSION INT)
캐릭터 메뉴 관계 표 TROLE_MENU(MENUID NUMBER,ROLEID NUMBER)
struts 2 액 션 설정
<action name="*/*" method="{2}" class="{1}Action">
<result name="input">/view/{1}/{1}_%{preAction}.jsp</result>
<result name="insert">/view/{1}/{1}_{2}.jsp</result>
...
</action>
사실 이들 의 관 계 는 쉽게 말 하면 사용자 와 캐릭터 가 많 고 캐릭터 와 메뉴 가 많다 는 것 이다.
먼저 시스템 URL 조직 방식 / sys / module / crud. jspx, 즉 하나의 기능 모듈, 예 를 들 어 사용자 관리 / sys / user / list. jspx, / sys / user / insert. jspx...
URL 의 module 대응 TMENU 표 의 module 필드, Permission 필드 에 대응 하 는 list, insert 등에 대응 하 는 표시 코드 입 니 다.내 표시 규칙 은 list - 1, insert - 2, edit - 4, save - 8, delete - 16 으로 유추 된다.
SELECT MODULE,SUM(PERMISSION) AS PM FROM T_MENU INNER JOIN.................................................................................
다음은 위 에 있 는 것들 을 어떻게 결합 시 킬 것 인가?
1. 먼저 ContextLoadListner 를 써 서 표시 규칙 을 초기 화 합 니 다. 저 는 Xml 를 사용 합 니 다.
<Permissions>
<Permission canIgnore="false">
<Name>list</Name><Value>1</Value>
</Permission>
<Permission canIgnore="true">
<Name>select</Name><Value>256</Value>
</Permission>
<Permissions>
canIgnore 는 이 동작 이 권한 판단 을 무시 할 수 있 는 지 여 부 를 표시 합 니 다. 예 를 들 어 어떤 페이지 는 부 서 를 선택 하기 위해 창 을 꺼 내야 합 니 다 (/ sys / depart / select. jspx). 이 때 select 는 권한 판단 을 거치 지 않 습 니 다.
초기 화 완료 후 맵 < String, Permission > 을 applicationContext 에 넣 습 니 다.
2. 차단기 (저 는 Struts 2) 를 씁 니 다.
먼저 URL 에 있 는 Action 을 가 져 옵 니 다. 이 Action 을 사용 하여 Context 의 맵 < String, Permission > 에서 Permission 대상 을 찾 습 니 다.
permission = definition.get(action);
if(permission.canIgnore())
return true;
else{
Integer modulePermission = session .get(module);
return permission.getValue() & modulePermission > 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.