【问题标题】:Sentry 2 - How to control denied group permissionsSentry 2 - 如何控制被拒绝的组权限
【发布时间】:2014-03-31 16:56:45
【问题描述】:

我正在尝试使用哨兵实现我的访问控制,但我发现文档不够清晰。我需要帮助的几件事:

我用这个创建了一个组“测试者”:

$group = Sentry::createGroup(
        array(
            'name'        => Input::get('txtGroupName'),
            'description' => Input::get('description'),
            'permissions' => Input::get('permissions'),
            'tenant_id'   => Sentry::getUser()->tenant_id,  
        ));

上面的Input::get('permissions')格式如下:

Array
(
    [members.create] => 1
    [members.read] => 1
    [members.update] => 1
    [members.delete] => 1    
    [roles.create] => 0
    [roles.read] => 0
    [roles.update] => 0
    [roles.delete] => 0
)

现在,当我查看我的数据库组表时,我只得到了这个:

{"members.create":1,"members.read":1,"members.update":1,"members.delete":1}

结果,当我来检查具有以下测试人员角色的用户的权限时,我得到了真实的,用户有权访问。

$user = Sentry::getUser();                               
$hasAccess = $user->hasAccess('roles.create');           
var_dump($hasAccess);

如果我做错了或需要更改某些内容,我们将不胜感激。

【问题讨论】:

    标签: laravel-4 cartalyst-sentry


    【解决方案1】:

    这就是它应该工作的方式,afaik。我唯一建议的是将哨兵许可证应用为过滤器,例如:

    Route::filter('role.create', function(){
      $user = Sentry::getUser();
      if ( !$user || !Sentry::getUser()->hasAccess('roles.create') ) {
        return Redirect::route('whatever')->with('warning', 'yout cant create roles');
        //or something more relevant to your app
      }
    });
    

    并且很可能在路由中使用该过滤器

      Route::any('user/create',  array('before' => 'role.create', 'as' => 'named.route',
        //return stuff  
      ));
    

    【讨论】:

      猜你喜欢
      • 2021-10-22
      • 2019-09-18
      • 2020-02-12
      • 2014-04-14
      • 1970-01-01
      • 2015-08-30
      • 1970-01-01
      相关资源
      最近更新 更多