如何在 Sentry 中为 Laravel 应用程序使用权限
How to Use Permissions in Sentry for Laravel application
我需要在 Laravel 应用程序中使用 Sentry 2.1,我阅读了这篇文档
https://cartalyst.com/manual/sentry/2.1
我真正需要的是一些组并为每个组分配一些权限,然后将这些组分配给用户。
以这个为例(我从同一个 link 拿来的):
我用以下细节注册了一个用户
Sentry::register(array(
'email' => 'john.doe@example.com',
'password' => 'foobar',
'activated' => true,
));
然后我用以下详细信息注册了一个组:
$group = Sentry::createGroup(array(
'name' => 'Moderator',
'permissions' => array(
'admin' => 1,
'writers' => 1,
),
));
然后我将群组分配给用户
问题:
有人可以提供一段代码帮助我修改 routes.php
并向其添加过滤器,以便过滤器将应用于权限而不是组。
Route::group(array('before' => 'admin'), function()
{
Route::controller('admin','adminController');
});
Route::group(array('before' => 'mod'), function()
{
Route::controller('cruds','crudController');
});
例如,具有 admin
权限的用户只能看到 adminController links
检查权限是通过 Sentry hasAccess()
方法完成的。您可以创建多个过滤器来针对不同的权限检查采取特定的操作,或者您可以使用将权限作为参数并对其进行检查的通用过滤器。下面是一个通用的 "hasAccess" 过滤器,您可以向其传递要检查的权限。
过滤器:
Route::filter('hasAccess', function ($route, $request, $value) {
try {
// get the logged in user
$user = Sentry::getUser();
// check the user against the requested permission
if (!$user->hasAccess($value)) {
// action to take if the user doesn't have permission
return Redirect::home();
}
} catch (Cartalyst\Sentry\Users\UserNotFoundException $e) {
// action to take if the user is not logged in
return Redirect::guest(route('login'));
}
});
路线:
Route::group(array('before' => 'hasAccess:admin'), function() {
Route::controller('admin','adminController');
});
Route::group(array('before' => 'hasAccess:mod'), function() {
Route::controller('cruds','crudController');
});
我需要在 Laravel 应用程序中使用 Sentry 2.1,我阅读了这篇文档 https://cartalyst.com/manual/sentry/2.1 我真正需要的是一些组并为每个组分配一些权限,然后将这些组分配给用户。
以这个为例(我从同一个 link 拿来的): 我用以下细节注册了一个用户
Sentry::register(array(
'email' => 'john.doe@example.com',
'password' => 'foobar',
'activated' => true,
));
然后我用以下详细信息注册了一个组:
$group = Sentry::createGroup(array(
'name' => 'Moderator',
'permissions' => array(
'admin' => 1,
'writers' => 1,
),
));
然后我将群组分配给用户
问题:
有人可以提供一段代码帮助我修改 routes.php
并向其添加过滤器,以便过滤器将应用于权限而不是组。
Route::group(array('before' => 'admin'), function()
{
Route::controller('admin','adminController');
});
Route::group(array('before' => 'mod'), function()
{
Route::controller('cruds','crudController');
});
例如,具有 admin
权限的用户只能看到 adminController links
检查权限是通过 Sentry hasAccess()
方法完成的。您可以创建多个过滤器来针对不同的权限检查采取特定的操作,或者您可以使用将权限作为参数并对其进行检查的通用过滤器。下面是一个通用的 "hasAccess" 过滤器,您可以向其传递要检查的权限。
过滤器:
Route::filter('hasAccess', function ($route, $request, $value) {
try {
// get the logged in user
$user = Sentry::getUser();
// check the user against the requested permission
if (!$user->hasAccess($value)) {
// action to take if the user doesn't have permission
return Redirect::home();
}
} catch (Cartalyst\Sentry\Users\UserNotFoundException $e) {
// action to take if the user is not logged in
return Redirect::guest(route('login'));
}
});
路线:
Route::group(array('before' => 'hasAccess:admin'), function() {
Route::controller('admin','adminController');
});
Route::group(array('before' => 'hasAccess:mod'), function() {
Route::controller('cruds','crudController');
});