Laravel - Entrust 使用方法
Entrust使用方法-start
-
在控制器中的用法
// 判断用户角色 dd(auth()->user()->hasRole('admin')); dd(auth()->user()->hasRole('user')); // 多个角色判断(满足其中一个即可,第二个可选参数,true时需要同时满足) dd(auth()->user()->hasRole(['admin','user'])); //或者 dd(auth()->user()->hasRole(['admin','user'],true)); //并且 // 判断用户是否有相应权限 dd(auth()->user()->can('create users')); // 匹配模式 dd(auth()->user()->can('*users')); // 多个权限判断(满足其中一个即可,第二个可选参数,true时需要同时满足) dd(auth()->user()->can(['create users','aaa'])); //或者 dd(auth()->user()->can(['create users','aaa'],true)); //并且 // 判断角色和权限其他用法 Entrust::hasRole('role-name'); Entrust::can('permission-name'); // is identical to Auth::user()->hasRole('role-name'); Auth::user()->can('permission-name'); // 匹配判断 // match any admin permission $user->can("admin.*"); // true // match any permission about users $user->can("*_users"); // true // 判断用户是否有第一个数组中得角色和第二个数组中得权限,第三个数组中得validate_all 如果为 true 则为或者操作,如果为 false 则为并且操作, return_type 为整个判断返回的类型,可以为bool类型,可以为数组,也可以为 both ,both则是把每个判断的结果以数组的形式展现。 dd(auth()->user()->ability( array('admin','user'), array('create users','edit users'), ['validate_all' => true,'return_type' => 'both'] )); //下面的方法和上面的一致 dd(auth()->user()->ability( array('admin', 'user'), array('create users', 'edit users'), array('validate_all' => true,'return_type' => 'both') )); $user->ability('admin,owner', 'create-post,edit-user'); // 第三个可选参数为数组 $options = array( 'validate_all' => true | false (Default: false), 'return_type' => boolean | array | both (Default: boolean) ); $options = array( 'validate_all' => true, 'return_type' => 'both' ); //下面的方法和上面的判断 结果是一致的,只不过写法不同而已。 list($validate, $allValidations) = $user->ability( array('admin', 'owner'), array('create-post', 'edit-user'), $options ); var_dump($validate); // bool(false) var_dump($allValidations); // array(4) { // ['role'] => bool(true) // ['role_2'] => bool(false) // ['create-post'] => bool(true) // ['edit-user'] => bool(false) // } // 等价写法 Entrust::ability('admin,owner', 'create-post,edit-user'); // is identical to Auth::user()->ability('admin,owner', 'create-post,edit-user');
- 模版标签
@role('admin') <div class="panel-body"> <p>admin</p> </div> @endrole @permission('create users') <div class="panel-body"> <p>create users</p> </div> @endpermission @ability('admin,owner', 'create-post,edit-user') <div class="panel-body"> <p>'admin,owner', 'create-post,edit-user'</p> </div> @endability
-
中间件
Route::group(['prefix' => 'admin', 'middleware' => ['role:admin']], function() { Route::get('/', 'AdminController@welcome'); Route::get('/manage', ['middleware' => ['permission:manage-admins'], 'uses' => 'AdminController@manageAdmins']); });
-
传递多个参数(分隔中间件名和参数名来指定,多个中间件参数可以通过逗号分隔):
'middleware' => ['role:admin|root'] 'middleware' => ['permission:owner', 'permission:writer'] 'middleware' => ['ability:admin|owner,create-post|edit-user,true']
-
Entrust使用方法-end
本作品采用《CC 协议》,转载必须注明作者和本文链接
老郭博客:laughing:
个人博客地址:www.phpsix.com
你这高产的速度。。。。太
@NicolaBonelli 哈哈,拼死累活的写代码。:smiley:
blade里面使用@role不起作用怎么回事,不管true还是false都会隐藏资源