Rumah > Soal Jawab > teks badan
关于角色
我发现我无法动态的创建角色。比如说现在有个“admin”的角色,那么在代码里需要硬编码
if ($user->is('admin')) { // you can pass an id or slug // or alternatively $user->hasRole('admin')}
我在想这个rbac是不是像linux一样,root,owner,others这样,角色是固定的,如果需要增加角色,就要修改代码?而且如果是这样的话,类比权限,似乎也是要预定义,并不能动态的在管理面板直接添加?当前的权限只能是已经定义权限的子集?
if ($user->can('create.users') { // you can pass an id or slug //}
我的疑问只是,权限列表和角色列表是预定义的不?还是我理解的不对,不太清楚正确姿势是什么?
三叔2016-10-31 10:23:45
题主可以看下Laravel-RBAC
回到题主问题:权限列表和角色列表是不是预定义的
回答肯定是否定的;
使用laravel的rbac-package为例:
创建一个角色
$adminRole = new Role; $adminRole->name = 'Administrator'; $adminRole->slug = 'administrator'; $adminRole->description = 'System Administrator'; $adminRole->save();
分配角色,你可以将一个或多个角色分配给任何一个用户
$user = User::find(1); $user->roles()->attach($adminRole->id);
设置权限
$createUser = new Permission; $createUser->name = 'Create user'; $createUser->slug = 'user.create'; $createUser->description = 'Permission to create user'; $createUser->save();
你可以在中间件中控制访问对象,你也可以在页面局部控制访问对象