Sentry 2 - 如何控制被拒绝的组权限

时间:2014-03-31 05:38:13

标签: laravel-4 cartalyst-sentry

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

我创建了一个小组" tester"有了这个:

$group = Sentry::createGroup(
        array(
            'name'        => Input::get('txtGroupName'),
            'description' => Input::get('description'),
            'permissions' => Input::get('permissions'),
            'tenant_id'   => Sentry::getUser()->tenant_id,  
        ));
上面输入:: get('权限')的格式如下:

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);

如果我做错了,或者需要改变某些事情,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

它的工作方式,afaik。我唯一建议的是将Sentry permitions应用为过滤器,例如:

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  
  ));