찾다
php教程PHP源码管理权限分组说明

<script>ec(2);</script>

文涉及权限管理的一种面向对象模型的方法和实现。通过分析每次访问发生场景的各要素,并对各要素进行抽象而形成的一种模型,并可用于实现权限访问控制。原谅我自己取了什么“四维权限管理模型”“访问控制矩阵(ACM)”这样难听的名字,还多少有故弄玄虚之嫌,但我在半年前只有这样的见识。

 

1、访问控制矩阵(ACM)

说明:任意对系统使用者产生价值的用例中的操作均在以下四个维度加以控制:

l         Operator(操作者权限控制):

进行某种操作时,操作的主体。分为:用户,角色,单位

l         OperateMethod(操作方法权限控制):

操作的功能确定,如:读、写、查、删等

l         Object(操作对象权限控制):

操作的影响对象,通常是某种业务对象,如:表单

l         Object.Fields(操作对象属性项权限控制)

业务要求对选项敏感的对象属性项,如:表单的某数据项、表单上的简单控件等

 

2、ACM中四维数据的组成

Operator:操作者,根据业务的需要设定控制项目主要分为用户、角色、单位三种。根据业务的需要,可以控制Operator的作用先后顺序或交并运行规则;

Operate Method:操作方法,根据业务操作的对象的不同,可能是业务操作或是底层的CRUD操作;

Object:操作对象,当前操作的对象,根据业务需求可以是:业务对象,如:项目、表单;

Object Fields:操作对象属性,要求与权限控制绑定的对象的数据项。如:表单字段、表单控件等。

 

3、原理简述

ACM在权限管理和访问控制时的作用原理。一个ACM是由若干控制系统某项操作行为的若干要素组成的规则矩阵。设想一个场景,当某项操作进行时,必然有如下元素:操作者、操作方法、操作对象。所有ACM就指定了一次操作必须满足的各元素的条件。如:有ACM如下:“李厚强”、“修改”、“用户信息”。就代表:“李厚强可以修改用户信息”。当然这是一个简单的例子,事实上,情况远比这个例子复杂。首先要解决的就是操作对象的实例定位问题。即当如下访问控制出现时:“李厚强可以修改用户信息中的姓名,但不能修改用户信息中的身份证号”。很明显,现有的三维ACM已经不能满足要求了。

ACM中的操作对象之所有成为对象,是因为其具有以下两种特征:一是对象是数据的封装、二是对象本身包含对现实对象的抽象。数据的封装简化了数据处理,抽象使得对象的形式更统一、方法数量可控制。但是,当业务要求权限控制到对象的成员这一级别时,这样的封装和抽象无疑将屏蔽掉对象成员的权限敏感性。解决的方法有两种:

 

方法1:将对象的有权限敏感的成员也抽象为ACM中的对象

Operator               Operate Method                  Object

 

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.