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

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

class myuser extends user{

通过这种方式,您可以为访客或主持人提供任何您想要的角色或权限。您可以使用Codeigniter、Zend和许多其他好的框架。

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

最新更新