CRM권한 관리
권한 관리는 리소스에 대한 사용자 작업을 관리하는 것입니다. 본 CRM 시스템의 권한(리소스라고도 함)은 역할 운영 권한, 즉 RBAC(Role-Based Access Control, 역할 기반 액세스 제어)를 기반으로 구현됩니다. 즉, 사용자는 역할을 통해 권한과 연결됩니다. 간단히 말해서 사용자에게는 여러 역할이 있고 각 역할에는 여러 권한이 있습니다. 이러한 방식으로 "사용자 역할 권한" 권한 부여 모델이 구성됩니다. 이 모델에서는 사용자와 역할, 역할과 권한 간에 다대다 관계가 존재합니다. 테이블 간의 다대다 관계를 실현하려면 다대다 관계를 2개로 나누어야 합니다. 대다 관계. 따라서 중간 테이블, 사용자 역할 테이블 및 역할 권한 테이블이 도입되었습니다.
권한 관리 모듈에는 총 5개의 테이블이 포함됩니다.
3개의 주요 테이블
a) 사용자 테이블(t_user),
b ) 역할 테이블( t_role),
现 III.
1, 모듈, 캐릭터 , 사용자의 단일 테이블 CRUD
모듈 CRUD: T_MODULE 테이블 운영
역할에 권한 부여
권한 부여 역할에: ztree를 사용하여 권한 트리 구조 구축 1. 먼저 이 모듈을 바인딩하고2 3. 하위 모듈을 바인딩합니다. 모듈
a) jQuery 플러그인 zTree를 사용하여 리소스의 트리 구조를 구축합니다. 트리의 내용은 t_module
테이블의데이터
b) 마우스를 사용하여 zTree의 선택 상자를 클릭하여
테이블을 작동합니다. )역할에 대한 권한 부여 구현
사용자 할당 역할사용자에게 역할 부여: ComboBox 다중 선택 사용
A) 계정 번호 추가: t_user_role에 직접 레코드 삽입
b) 수정. 계정: 먼저 삭제하고 추가하세요.
사용자를 생성하거나 사용자 정보를 수정할 때 콤보박스 다중 선택 상자를 사용하여 사용자에게 역할 작업을 할당할 수 있습니다. t_user_role(사용자 역할 테이블)
아이디어 :
t_permission 테이블에서 권한 값(acl_value)을 가져와 페이지에서 전달된 값 또는 주석에 지정된 권한 값과 비교합니다.
1. 페이지가 Request.getParameter("permission")을 통과합니다. userId를 기반으로 데이터베이스를 쿼리하여 찾은 권한 목록을 비교합니다
2. 주석을 통해 모듈 권한 값을 명확히 합니다. @requirePermission(permission="1010";
사용자 획득 권한은 세션에 저장되며, 사용자가 리소스를 작동할 때 사용자에게 이 권한이 있는지 확인하기 위해 리소스 권한 값이 제출됩니다. 차단 인증을 위해 Spring AOP를 사용하세요. . />
> > ~ ~ ~ 사용자 권한 유지 将 3. 권한을 세션-"앞에 저장합니다. -최종 페이지 판단
4. 백그라운드 권한 확인
5. 반환
맞춤 주석
면 2. 절단면 작성
진입점 정의 포인트 : 권한 주석을 갖는 방법을 자체 가로채기 , 이는 또한 개선될 수 있습니다 성능
//@Pointcut("execution(* com.shsxt.controller.*.*(..))") @Pointcut("@annotation(com.shsxt.annotation.RequirePermissions)") public void pointcut() { }
List<String> permissions = permissionService.findRolePermissions(roleIds.substring(0, roleIds.lastIndexOf(","))); String permissioFront = request.getParameter("permission"); // 后台权限认证 AssertUtil.isTrue(!permissions.contains(permissioFront), "您无权操作此模块");
주석을 통해
Rrieee
3. AOP AOP namepsace를 소개하고 AOP 주석 드라이버를 활성화합니다.
List<String> permissions = permissionService.findRolePermissions(roleIds.substring(0, roleIds.lastIndexOf(","))); if (requirePermissions != null) { String permission = requirePermissions.permission(); // 后台权限认证 throw new UnAuthPermissionException(permission, "您无权操作此模块"); }
4. 필요한 메서드에 주석을 활성화합니다. 권한 인증
권한은 모듈 테이블의 act_value와 일치해야 합니다
🎜 🎜🎜 프런트엔드 인증: Freemarker 내장 기능 결정🎜🎜사용자 권한을 얻은 후 프런트엔드에서 freemarker 구문을 사용합니다. freemarker를 사용하여 사용자가 이 리소스를 작동할 수 있는지 확인합니다(list?seq_contains('permission value'))🎜🎜1.SQL:🎜<!-- 启用@Aspect注解 --> <aop:aspectj-autoproxy />🎜2. AOP 측면 클래스에서 권한을 쿼리하고 권한 값 목록을 꺼내서 넣습니다. Session🎜🎜🎜🎜🎜3. 첫 페이지 판단: 설명: freemarker 내장 함수 sql_contains를 사용하여 hashmap.contains(Java의) 컬렉션과 유사한 true🎜🎜 반환을 포함하여 시퀀스에 매개변수 값이 포함되어 있는지 확인합니다. 값);🎜🎜🎜🎜
위 내용은 Java 인증 및 인증의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!