【问题标题】:Laravel 4, Sentry 2 and user permissionsLaravel 4、Sentry 2 和用户权限
【发布时间】:2013-11-14 22:50:44
【问题描述】:

我即将开始构建一个系统,该系统需要选择一组问题并将其保存为清单文档以分发给任意一组用户。

我打算使用 Laravel 4 作为我的框架并使用 Sentry 2 来处理权限。

我的问题是:

如果我使用具有 Admin 级别访问权限的用户来创建检查列表,并且我有 100 个 Inspector 级别的用户,我可以限制访问权限吗为每个使用 Sentry 的用户创建一个清单?理想情况下,我希望允许用户访问单个清单(检查集合)。

【问题讨论】:

    标签: laravel laravel-4 cartalyst-sentry


    【解决方案1】:

    您可以轻松地为您的清单创建单独的组:

    // Create the group
    $group = Sentry::createGroup(array(
        'name'        => 'Administrators',
        'permissions' => array(
            'checklists.admin' => 1,
            'checklists.view' => 1,
        ),
    ));
    
    // Create the group
    $group = Sentry::createGroup(array(
        'name'        => 'checklists.view.101',
        'permissions' => array(
            'checklists.view.101' => 1,
        ),
    ));
    

    将您的用户添加到清单组:

    $user = Sentry::getUser()->addGroup( Sentry::getGroupProvider()->findByName('Checklist101') );
    

    并检查它是否可以访问它:

    return $user->hasAnyAccess(['checklists.view', 'checklists.view.101'])
    

    在这种情况下,如果您的用户是管理员,也可以查看。

    【讨论】:

    • 感谢您的回复,但如果检查列表是动态创建的,这将不起作用,除非每次创建列表时,我都会专门为该列表创建一个组并将用户分配到新组。这不会最终污染用户组表吗?就个人而言,我现在正在考虑将用户/检查列表分离为列出检查列表 ID 和允许的用户 ID 的查找表。
    • 有办法将真实组与列表组分开,“污染”您的组表有什么问题?在我看来,这比仅仅创建一些完全不同的东西来处理应该由你的主要授权类处理的东西要好。
    • 很公平,我明白你的意思。我看到我也可以使用特定于用户的权限。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 2014-06-25
    • 2013-04-22
    • 1970-01-01
    • 2014-03-31
    • 2014-03-06
    • 2014-01-26
    • 2015-07-29
    • 1970-01-01
    相关资源
    最近更新 更多