2012-12-11 64 views
0

我试图在我的网站上创建模块化管理功能,并且我有几个关于如何轻松查询谁拥有管理员权限到特定页面的问题(我希望如此我可以将管理员权限更改为网站的特定部分,以免给任何一个人太多的控制权)。我最初考虑的是白名单,但是决定处理它会变得非常难看,于是我开始考虑构建一个SQL表,该表包含成员ID号和他们有管理控制权的页面(也许到了什么程度他们在该页面上拥有管理权限)。php创建模块化管理功能

为了做到这一点,我想到了3列,第一个是ID,第二个是用逗号隔开的页面,第三个是带有标记位的特定管理功能的字节。当用户登录时,它会将这些信息存储在一个会话中,他们拥有管理权限的页面用于“快速访问”,以便某些内容出现在页面上(例如创建新消息,修改帖子,删除帖子等...)

这是一个可行的/有效的方式吗?有没有关于如何给予和检查管理权限的标准?

我在寻找,我在考虑对每一个动作做一个检查/查找比在一个会话中保存信息要好,但是前提声音的其余部分呢?

+0

你在建什么管理员?你在使用一些框架吗?许多框架都有访问控制插件(称为模块,火花,扩展等),它们适合您正在寻找的内容。 –

+0

我从头开始构建它。这是一种学习经验,所以我想从绝对没有建立它(我只是使用PHP和MySQL) –

回答

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>的东西,并赋予用户执行角色的能力。这不是一个实际的项目,而是一个学习的课堂活动。