数据库表结构
<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 Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

Atom编辑器mac版下载
最流行的的开源编辑器

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

禅工作室 13.0.1
功能强大的PHP集成开发环境

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

Dreamweaver Mac版
视觉化网页开发工具