PHP的部分访问控制

PHP的部分访问控制,php,permissions,acl,Php,Permissions,Acl,是否有任何库/解决方案提供对资源的部分访问?这样的权限控制是如何调用的 大多数ACL库完全允许/拒绝操作: user.create user.update 用户。显示 但如果应该有“部分”许可怎么办。 比如: 您只允许查看角色为来宾或主持人的活动用户 您可以使用角色设计器编辑用户,但只能编辑其电话和邮件 第一个示例可能如下所示: 许可: user.show 特权: status=>active && 角色=>嘉宾| |主持人 第二点: 许可: user.edit 特权: editable=>电

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

大多数ACL库完全允许/拒绝操作:

user.create
user.update
用户。显示

但如果应该有“部分”许可怎么办。 比如:

  • 您只允许查看角色为来宾或主持人的活动用户
  • 您可以使用角色设计器编辑用户,但只能编辑其电话和邮件
  • 第一个示例可能如下所示:

    许可:

    user.show

    特权:

    status=>active
    &&
    角色=>嘉宾| |主持人
    

    第二点:

    许可:

    user.edit

    特权:

    editable=>电话、邮件
    

    更新:

    为了让我的问题更清楚,我添加了这个用法示例,以展示(在我的想法中)它可能是什么样子

    // 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
    

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

    class myuser extends user{
    

    通过这种方式,您可以为来宾或版主提供您想要的任何角色或权限。您可以使用Codeigniter、Zend和许多其他优秀的框架。

    使用Zend Framework 2,您将拥有
    ZfcUser
    模块,该模块可以与
    bjyauthorize
    模块耦合。通过一些配置,您将获得所需的信息。

    似乎我没有举一个好的例子。我的问题不是为用户提供一个角色,我正在寻找一个权限库,它允许一种比只允许或拒绝一个操作更不同的方法。在我的示例中,有一个权限,允许显示处于活动状态且属于角色guest或moderator的用户。可能还有另一个允许查看非活动女性用户的权限,等等。还没有使用Zend 2,但是这个模块看起来比基本的Zend ACL更有希望。你可以为你需要提供的用户和内容定义细粒度的权限。使用它非常方便。