使用PHP管理用户权限的最佳方法是什么。
1) 通过使用新表?table user_permissions (id, userId, addNews, editNews, deleteNews, ...)
每个属性列的类型都是布尔值(1 => 是,0=>否)
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
或者你有另一种方式?
没有最好的方法。每个解决方案都取决于您希望如何使用它。
例如,至少需要回答以下问题:
- 您有多少权限?
- 它们是否分层(来宾 -> 用户 ->管理员 ->超级管理员)?(例如,一个用户可以撰写新闻,但不能删除新闻。
不过,在代码中有一个点可以检查权限会更容易。
function havePermission($name){
// logic
}
从不!在代码中执行任何内联权限检查。这是坏兔子。
此外,实际上有三种存储权限的方法:
新表(或您的主用户表),如您提供:
userId, accessNews, accessPages, etc
- 但是,具有不同结构的新表:
userId, permissionId
主用户表,一个字段:
userId, groupId
或userId, access
在此解决方案中,在访问中,您可以编写可以使用布尔逻辑进行检查的访问矩阵。