【问题标题】:Partial access control for PHPPHP的部分访问控制
【发布时间】:2016-09-13 10:40:31
【问题描述】:

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

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

user.create user.update user.show

但是如果应该有“部分”权限怎么办。 比如:

  1. 您只能查看 活跃 角色为 guestmoderator 的用户。
  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

【问题讨论】:

    标签: php permissions acl


    【解决方案1】:

    据我所知,在大多数库中,您可以选择扩展类。所以你可以像

    一样扩展类用户
    class myuser extends user{
    

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

    【讨论】:

    • 看来我没有举好例子。我的问题不是为用户提供一个角色,我正在寻找一个权限库,它允许一种比只允许或拒绝一个动作更有区别的方法。在我的示例中,有一个权限允许显示处于活动状态且属于访客或主持人角色的用户。可能还有其他权限允许查看不活跃的女性用户等。
    【解决方案2】:

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

    【讨论】:

    • 还没用过 Zend 2,但是这个模块看起来比基本的 Zend ACL 更有前途。必须看看这是否解决了我的问题。
    • 您可以为需要提供的用户和内容定义细粒度的权限。使用起来非常方便。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多