PHP-后台权限管理设计问题
我是这么想的,有三张表,管理员表、管理组表、规则表
管理员表(members)
m_id m_name m_passw m_groupid
管理员ID 用户名 密码 管理所对应的管理组ID
规则表(rules)
r_id r_name r_method r_status
规则ID 规则名 控制器名/方法名 状态
管理组(group)
g_id g_name g_content
组ID 组名 组权限(包含这一组所有的规则ID)
如上面代码里的,我觉得三张表就可以应付了,为什么我看到网上有6、7张表,之多,中间有关联表或映射表什么的东西,我想知道,这么多表具体有什么作用呢?实际操作起来(操作数据库)还很复杂,如果是必须,具体作用是什么?求解答疑惑
回复内容:
有没有哪位大哥做过后台权限管理这个模块的?能否给我说下你的设计思路?有文档给我看看也行(我也在网上找了资料,才来提问的,不要让我自行百度好吗?心塞...)
我是这么想的,有三张表,管理员表、管理组表、规则表
管理员表(members)
m_id m_name m_passw m_groupid
管理员ID 用户名 密码 管理所对应的管理组ID
规则表(rules)
r_id r_name r_method r_status
规则ID 规则名 控制器名/方法名 状态
管理组(group)
g_id g_name g_content
组ID 组名 组权限(包含这一组所有的规则ID)
如上面代码里的,我觉得三张表就可以应付了,为什么我看到网上有6、7张表,之多,中间有关联表或映射表什么的东西,我想知道,这么多表具体有什么作用呢?实际操作起来(操作数据库)还很复杂,如果是必须,具体作用是什么?求解答疑惑
你可以看一下PHPCMS的权限设计
常见的设计方式RBAC:
设计思路:通过对当前访问URI进行权限鉴定
数据结构:
表1:权限表,用于存放所有的访问URI
表2:权限组表,存权限组拥有访问权限的URI的id
表2:权限组,权限组对应有哪些用户
大致就是这么个思路
在你的基础上补充一下,你后台应该有一张后台菜单目录表,表里面记录了具体菜单名称对应的控制器方法名信息,权限规则表里把存控制器信息字段可以改成存菜单ID,多个可以逗号隔开。
一张用户表(必须字段gourpid 记录该属于用户组id), 一张用户组表(必须字段node,用来记录菜单表id,用逗号隔开记录),一张后台菜单表(用来记录菜单的url,也用于后台菜单遍历出菜单)。 用户登陆时,查询该用户属于哪个用户组,取出用户组的node,然后用node查出菜单遍历出菜单,也可以做相应的权限
可以看一下 YII2 的权限设计,每个用户可以对应多个角色,不同角色可以设置不同的权限:http://www.yiichina.com/doc/guide/2.0/security-authorization
或者参考一下discuz的权限设置
推荐阅读
-
构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(24)-权限管理系统-将权限授权给角色
-
vue中如何实现后台管理系统的权限控制的方法示例
-
解决npm管理员身份install时出现权限的问题
-
Android7.0实现开机后台安装应用----rc文件的使用及权限问题
-
ASP.NET MVC+EF框架+EasyUI实现权限管理系列(2)-数据库访问层的设计Demo
-
huhamhire-hosts提示要以管理员身份或根身份进入的权限问题
-
django项目后台权限管理功能。
-
vue中如何实现后台管理系统的权限控制的方法步骤
-
构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(26)-权限管理系统-分配角色给用户
-
基于RBAC设计的通用权限管理框架