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