我正在尝试使用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);
如果我做错了,或者需要改变某些事情,我将不胜感激。
答案 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
));