是否有任何库/解决方案可以部分访问资源?这样的权限控制是如何调用的?
大多数ACL库完全允许/拒绝操作:
user.create
user.update
user.show
但是,如果应该有"部分"许可呢。类似于:
- 您只能看到具有来宾或主持人角色的活动用户
- 您可以编辑角色为设计器的用户,但只能编辑他的电话和邮件
第一个例子可能看起来像这样:
权限:
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
模块。你会有你需要的一些配置。