2016-05-17 70 views
2

是否有任何库/解决方案提供对资源的部分访问?这种权限控制是如何被调用的?部分访问控制PHP

大多数ACL库允许/拒绝完全行动:

user.create user.update user.show

但是如果有应该是一个 “局部” 的权限。 喜欢的东西:

  1. 你只能看到活跃用户与角色客人主持人
  2. 你被允许与角色设计师但只有他电话邮件编辑的用户。

第一个例子可以是这样的:

权限:

user.show

特权:

status => active && role => guest || moderator

和第二:

权限:

user.edit

特权:

editable => phone, mail

更新:

为了使我的问题更清楚,我已经加入此使用示例,以显示如何(在我的想法中)它可能看起来像。

// global access 
if($user->can('user.show')){ 
    // get the privileges provided by the permissions 
    $filter = $user->getPrivilegesFor('user.show'); 
    // use the privileges to filter the (database)query 
    // (using the example above the filter should restrict to active guests and moderators) 
    $result = $repo->getUsers($filter); 
}else{ 
// access denied 
} 
// use the result to fill the view 

回答

0

据我所知,在大多数库中,你可以选择扩展类。因此,您可以扩展类用户,如

class myuser extends user{ 

这样,您可以为访客或版主提供任何角色或权限。你可以使用Codeigniter,Zend和其他许多优秀的框架。

+0

似乎我没有举一个好例子。我的问题不是为用户提供角色,我正在寻找一个允许采用更多差异化方法的权限库,而不是仅允许或拒绝某个操作。在我的示例中,有一个权限允许显示活动并属于角色来宾或主持人的用户。可能有另一个允许看到不活跃的女性用户等的许可。 – user3333137

0

使用Zend Framework 2,您将有ZfcUser模块,它可以与bjyauthorize模块耦合。你会有一些你需要的配置。

+0

还没有使用过Zend 2,但是这个模块看起来比基本的Zend ACL更有前途。必须看看这是否解决了我的问题。 – user3333137

+0

您可以为需要提供的用户和内容定义细粒度权限。与它合作非常方便。 – ThierryB