Laravel-ACL 验证权限和角色

2017-01-05  本文已影响119人  伍源辉

验证角色

可以通过调用 is 方法验证角色。

基于用户的验证。

Laravel 5.3 使用 hasRole() 代替 is()

is()/hasRole() 方法支持用逗号代表 AND,管道分隔符代表 OR。你也可以传入操作符作为第二个参数。

// laravel 5.3 使用 hasRole()
$user = User::first();
$user->hasRole('administrator');
$user->hasRoleAdministrator();  // using method
$user->hasRole('administrator|moderator');

// laravel < 5.3
$user = User::first();
$user->is('administrator');
$user->isAdministrator();   // using method

// 使用管道分隔符作为 OR 操作符
// 任何一个角色通过则返回 true
$user->is('administrator|moderator');

// 使用逗号作为 AND 操作符
// 所有指定的角色必须全部通过才返回 true
$user->is('administrator,moderator');

// 传入操作符作为第二个参数
$user->is(array('administrator', 'moderator'), 'or');

验证权限

可以通过调用 can 方法验证权限。

基于角色的验证。

can() 方法支持用逗号代表 AND,管道分隔符代表 OR。你也可以传入操作符作为第二个参数。

$admin = Role::first(); // administrator
$admin->can('view.user');
$admin->canViewUser();  // using method.

// 数组形式
$admin->can(array('view.user', 'edit.user'));

// 数组形式加 or 操作符
$admin->can(array('view.user', 'edit.user'), 'or');

// 使用管道分隔符作为 OR 操作符
// 任何一个权限通过则返回 true
$admin->can('view.user|edit.user|view.admin|delete.admin');

// 使用逗号作为 AND 操作符
// 所有指定的权限必须全部通过才返回 true
$admin->can('view.user,edit.user,view.admin,delete.admin');

基于用户的验证

$user = User::first();
$user->can('delete.user');
$user->canDeleteUser(); // using method
上一篇下一篇

猜你喜欢

热点阅读