0

经过一番搜索,我成功安装了Authority-l4包以用于我的 Laravel 项目。文档清晰但很小(信息/示例不多)。这是我的配置文件看起来像 atm:

return array[

    'initialize' => function($authority) {
        $user = $authority->getCurrentUser();

        $authority->addAlias('manage', ['create', 'read', 'update', 'delete']);

        if($user->hasRole('admin')) {
            //Admin can manage all resources
            $authority->allow('manage', 'all');
        }

        // User can manage his own post
        Authority::allow('manage', 'User', function($self, $user){
            return $self->getCurrentUser()->id === $user->id;
        });

        // User can manage his own post
        Authority::allow('manage', 'Post', function($self, $post){
            return $self->getCurrentUser()->id === $post->id;
        });
    }

];

我对此有一些疑问:

  1. 如何为用户添加角色?hasRole()存在,为什么不setRole()呢?
  2. 我注意到没有任何东西保存到数据库中,这不是更好吗?
  3. 我如何将我的数据库与授权一起使用?谁能给我一个先机,我已经挣扎了四个小时了。
  4. 在一些文章中,他们说Role应该将类更改为拥有许多权限,而不是让用户拥有许多权限,这不是更好吗?

可能我正在考虑这个包的难度,搜索互联网也无济于事。任何帮助表示赞赏!

4

1 回答 1

2

我是权威的作者,虽然它主要是由 Conar Welsh 编写的,但我维护着 Authorization-l4。

  1. 由于包中定义的角色只是一个 Eloquent 关系,因此您可以像 Eloquent 中的任何其他关系一样简单地添加它们。
  2. 我不知道你在这里问什么,你能改写一下吗?
  3. 您能否详细说明自述文件中的问题(一般用法上方的部分)?
  4. 可能 - 要么工作。你不需要使用这个结构来使用Authority-l4。它只是一个可选结构,您可以 100% 自由设置。我个人根本不使用它,只使用它生成的权威外观。不过,我的大部分权限都没有存储在数据库中,因此这是一个因素。

权威背后的想法是它与实施无关。它真的不关心你将数据存储在哪里,你只需要告诉权威如何处理你的规则。阅读上面引用的自述文件部分和权威核心 repo 上的自述文件应该能够让您大致了解它期望如何加载信息 - 超出此范围的任何内容都由您自行决定。

于 2014-11-28T02:57:04.627 回答