加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 网站权限系统的最佳实践

发布时间:2020-12-13 22:44:04 所属栏目:PHP教程 来源:网络整理
导读:我正在开发的当前项目是一个Web应用程序,必须在自己的服务器上交付给多个客户.该网站需要一个权限控制系统,用于管理用户可以使用或不能使用的区域和功能. 至于知道,我正在设计一个数据库驱动的权限系统,权限存储在数据库中.每个用户都有一个角色.该角色定义
我正在开发的当前项目是一个Web应用程序,必须在自己的服务器上交付给多个客户.该网站需要一个权限控制系统,用于管理用户可以使用或不能使用的区域和功能.
至于知道,我正在设计一个数据库驱动的权限系统,权限存储在数据库中.每个用户都有一个角色.该角色定义可用的列表权限.架构如下所示:

用户表
1. user_id
2.名字
3. role_id

角色表
1. role_id
2.名字

权限表
permission_id
2.名字

roles_permissions表:
1. role_id
2. permission_id

在代码中,我将获取已记录的用户角色和权限,并检查用户是否能够执行操作或查看区域,如下所示:

if($user->hasPermission('Edit HR')) {
  // let user see the editing HR section
}

hasPermission将检查用户是否具有名为“编辑HR”的权限,并将返回所需的结果.我看到的问题是数据库表必须具有名称正好为“编辑HR”的权限记录,而不是“Edit_hr”或“HR Editing”.因此,我必须确保权限系统的数据对于应用程序使用的每个数据库都是相同的.哪种让我觉得这是一个有缺陷的设计,需要重新设计.创建新的部分和功能还需要更新所有数据库,这也使我成为一个悲伤的熊猫.

所以,基本上,问题是:设计数据库驱动的权限系统并在多个数据库上保持数据库完整性的最佳方法是什么?

解决方法

你提出的方案看起来很好.我要添加的唯一内容是在权限表上我将添加一个名为tag或类似的字段.

权限标记类似于EDIT_HR,您可以将其用作代码中的引用而不是其名称.使用该名称仅用于显示目的,例如HR编辑.这样,名称可以根据需要变化,并且不会影响您的代码.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读