我正在尝试在我的网站上创建模块化管理功能,并且我有一些关于如何轻松查找具有特定页面管理员权限的问题(我想要它以便我可以更改管理员权限)到网站的特定部分,以免给任何一个人太多的控制权。)
我最初考虑过白名单,但我觉得处理起来会非常难看,所以我开始考虑构建一个SQL表,其中包含成员ID号和他们拥有管理控制权的页面(也许他们在多大程度上拥有该页面的管理员权限。)
为了实现这一点,我考虑了3列,第一列是ID,第二列是以逗号分隔的页面,第三列是带有标记位的字节,用于特定的管理功能。当用户登录时,它会将信息存储在会话中,对于这些页面,他们拥有“快速访问”管理权限的页面,以便在页面上显示某些内容(例如创建新消息,修改帖子,删除帖子等) ...)
这是一种可行/有效的方法吗?是否有关于如何进行授权和检查管理员权限的标准?
[编辑]我在寻找,我认为对每个动作进行检查/查找比在会话中保存信息更好,但其余的前提是否有声音?
答案 0 :(得分:2)
这是我们几年前作为课堂活动所做的事情 使用DB管理用户的角色
Table user::
username password Role
1 123 REGULAR
2 123 MOD
3 123 ADMIN
Table Role::
Role-Name Permissions
ADMIN WRITE,DELETE, APPEND
MOD WRITE,APPEND
REGULAR WRITE
然后有一个读取权限,这是所有人共同的。并且有一个特殊的访客用户只能阅读。我们使用全文搜索来检查用户角色是否具有博客中的特定权限。
例如,如果用户是管理员,他可以看到他面板上的所有三个按钮。它是使用PHP完成的,在,
分割后,权限保留在数组中。
$sql = "Select Permissions from ROLE where Role-name = (select ROLE from user where username = '1')"
$permission[] = split(mysql_query($sql), ',');
<div id = command_bar>
<a> ...
some common buttons..</a>
foreach values in $permission[]
{ <a href='url?option=permission'> permission </a> }
上面创建了类似<a href="url/?option=APPEND">APPEND</a>
的内容,使用户能够执行这些角色。这不是一个实际的项目,而是一个学习的课堂活动。