数据库表结构
<span CREATE</span> <span TABLE</span><span `NewTable` ( `id` </span><span int</span>(<span 11</span>) <span NOT</span> <span NULL</span><span AUTO_INCREMENT, `title` </span><span varchar</span>(<span 255</span>) <span NOT</span> <span NULL</span><span , `menu_id` </span><span int</span>(<span 11</span>) <span NOT</span> <span NULL</span><span , `module` </span><span varchar</span>(<span 50</span>) <span NOT</span> <span NULL</span><span , `class` </span><span varchar</span>(<span 50</span>) <span NOT</span> <span NULL</span><span , `method` </span><span varchar</span>(<span 50</span>) <span NOT</span> <span NULL</span><span PRIMARY</span> <span KEY</span><span (`id`) );</span>
假定我们使用了MVC的结构,并通过url访问对应的模块及类和函数。
表中第一行表示一个操作,title表示操作名,menu_id表示属于哪一个菜单选项,module表示模块名(没有可以略过),class表示类名,method表示函数名
此外我们还需要一个用户组的表,大致如下:
其中access_list中保存的当前用户组所拥有的权限ID(对应上个权限表中的ID)
当然我们还需要一个用户表来对应用户组表
group_id表示的第用户所对应的用户组
当我们访问一个url的时候,比如:
http://testApp.test.com/index.php/module/testModule/testClass/testAction
通过路由分析,我们得到相应的数据:
模块->testModule
类->testClass
函数->testAction
通过三个参数,我们查找权限表中的数据,得到一个唯一的id值。
然后对比用户组中access_list中的数据,如果数据中包括有这个id,那么当前用户拥有当前操作的权限,反之没有权限。
那么我们如何来控制菜单选项,当用户有权限时才显示呢?
因为在权限表中的每个操作都对应有一个menu_id,即菜单选项。我们通过查找当前用户所属于的用户组信息,得到他所拥有的权限操作ID,再通过ID取得他所属于的菜单选项,这样就得到了当前用户所拥有的菜单权限。

핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

WebStorm Mac 버전
유용한 JavaScript 개발 도구

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