使用PHP管理用户权限的最佳方法

时间:2016-03-22 08:33:30

标签: php security permissions

用PHP管理用户权限的最佳方法是什么..

1)使用新表
table user_permissions (id, userId, addNews, editNews, deleteNews, ...)
每个属性列的类型是 boolean (1 => yes,0 => no)

2)使用逻辑门

$addNews = 1; 
$editNews = 2;  
$deleteNews = 4;
 ...
$permissions = $addNews | $editNews | $deleteNews | ...;

//Save permission in user table
//and save it in session on login to test permission in every page

$permissions = $_SESSION['permissions'];
if($permissions & 1) // true -> user has permission to add news

或者您有其他方式?

1 个答案:

答案 0 :(得分:2)

没有最好的办法。每种解决方案都取决于您希望如何使用它。

例如,至少您需要回答以下问题:

  • 您拥有多少权限?
  • 他们是否是分层的(来宾 - >用户 - > admin - >超级管理员)? (例如,一个用户可以访问写新闻,但不能删除它们。)

尽管如此,在您的代码中检查权限会更容易。

function havePermission($name){
// logic
}

NEVER!在代码中进行任何内联权限检查。这是不好的习惯。

此外,实际上有三种存储权限的方法:

  1. 您提供的新表格(或您的主要用户表格):

    userId, accessNews, accessPages, etc

  2. 新表,但结构不同: userId, permissionId
  3. 主要用户表,一个字段: userId, groupId 要么 userId, access

    在此解决方案中,在访问中您编写了可以使用布尔逻辑检查的访问矩阵。