检查RBAC中用户访问权限的最佳实践

时间:2014-03-09 13:42:04

标签: php rbac

在我的应用程序中我想从基于角色的访问控制开始,但我不知道检查loged用户是否具有访问权限的最佳实践。在页面上我有一些用户角色可以编辑的块,但是另一个只能查看,而第三个角色是这个块不可见。

我现在的代码如下:

if (role=="admin") {
   full access
} elseif (role=="user") {
   only display content without editing option
} else {
   // not loged or user role with limited access
   no content display
}

但是当我在第5页到第10页这个块时,创建很多这样的IF语句是非常不可行的。 是否有一些最佳实践来检查用户角色而不使用IF?

非常感谢,对不起我的英语。

1 个答案:

答案 0 :(得分:2)

给角色编号:

const ACCESS_NONE   = 0;
const ACCESS_USER   = 1;
const ACCESS_ADMIN  = 2;
const ACCESS_ROOT   = 4;

注意我使用2的幂,即使用户在某个用户之前拥有所有访问权限,它仍然不会更大(NONE + USER + ADMIN< ROOT)。

现在,您所要做的就是

if ($access >= ACCESS_ADMIN) { //admin+ only content