Php web应用程序中多个用户的访问控制
我正在开发一个PHP+MySQL社交网络应用程序,现在我需要为每个模块设置不同的访问控制(读取、创建、编辑、删除)(所有项目)和/或自我项目(自己创建的项目),以便对每个模块或特定用户进行分组 是否有人对此有建议(表结构等)Php web应用程序中多个用户的访问控制,php,mysql,database,Php,Mysql,Database,我正在开发一个PHP+MySQL社交网络应用程序,现在我需要为每个模块设置不同的访问控制(读取、创建、编辑、删除)(所有项目)和/或自我项目(自己创建的项目),以便对每个模块或特定用户进行分组 是否有人对此有建议(表结构等) 好的,这里我提供更多的细节,目前我有一个tbl_模块,tbl_用户和tbl_用户角色。每个用户和角色可以对特定模块具有不同的访问权限 阅读 更新 创造 删除 通过全局访问或仅限自己(自己的帐户或自己创建的记录)进行划分 我目前的做法是:创建另一个表来保存访问详细信息:
好的,这里我提供更多的细节,目前我有一个tbl_模块,tbl_用户和tbl_用户角色。每个用户和角色可以对特定模块具有不同的访问权限
- 阅读
- 更新
- 创造
- 删除
- 前交叉韧带
- 模块id(fk模块uid)
- 目标id(fk用户uid或角色uid)
- acl_类型(用于标识目标id引用的用户/角色)
- acl_读取
- acl_更新
- acl_创建
- acl_删除
- 0拒绝
- 1允许
- 2参考较低优先级检查(如果用户的值为2,则参考角色)
- 3仅限自己
谢谢你的回答。这是一个相当宽泛的问题,所以你可能只能得到非常宽泛的答案 大多数CMS系统都有一个表,列出了系统上可以生成的内容类型 另一个表描述了每种类型的内容是如何显示的(在头版、单个博客页面等) 另一个表为每个用户提供一个或多个“用户类型”或“组”,如管理员、未注册者、版主等 最后一个表是各种访问表——它显示了每个组有权做什么,包括它可以创建、编辑、发布的内容类型等 我建议您花一点时间研究其他CMS软件的数据库模式,例如,或其他数百万CMS系统之一
-亚当事实上,这是一个非常广泛的问题。假设您有一个清晰的应用程序层分离(例如,使用MVC),那么这就是业务层的工作 考虑到您的直接需求,它可能相当简单。在您的用户表中,有一个hasEdit、hasView等。对于每个项目,在其上附加一个代表创建者的用户ID。在业务层中,规则是如果他们是创建者,则他们具有编辑权限,或者他们具有hasEdit=true 更进一步,如果您有不同的类型,并且hasEdit权限是针对每个类型的,那么您需要另一个实体 用户权限
- 用户许可ID
- 用户ID(FK)
- 类型ID(FK)
- hasEdit(布尔值)
- 哈斯维尤
- 等等李>
使用角色和不同数量的权限,这可能会变得更加复杂。。这一切都取决于你的要求。您需要仔细确定您的业务需求(提出一系列用例),然后您可以从中进行设计。实际上,没有足够的信息比我在这里概述的要多(甚至这也可能不是您所需要的)。我喜欢使用一种防火墙规则方法或类似的mysql表规则方法:您可以授予用户或用户组对某些对象或对象组的某些权限。使每个规则成为规则表中的一行。当需要执行编辑之类的操作时,可以在规则表上为当前用户、当前用户组、布尔编辑列以及对象id或对象组进行内部联接。如果您返回任何行,则会授予权限。有很多种设计安全性的方法,对于不同的情况,我喜欢很多方法。还有一个UNIX风格的用户组。我碰巧喜欢 我开发了一个网站,它使用类似于的用户角色权限结构。在那个网站上,我使用了一个模板系统,它使用了一个页眉包含文件和一个页脚包含文件,用“标准内容”来包装页面内容。具有受限内容的页面可以将变量设置为所需权限,标头脚本会查找该权限,如果设置了,则会调用验证函数,以检查用户是否属于具有该权限的角色 使用用户角色权限模型的好处是,如果您的大多数用户都属于整洁的授权类别,那么为用户设置授权只需向该用户添加正确的角色即可。权限链接到角色,而不是直接链接到用户,因此您可以轻松地调整整个类用户的权限