关于 RBAC 的一点疑问
高洛峰
高洛峰 2016-10-31 10:22:09
0
1
605

关于角色

我发现我无法动态的创建角色。比如说现在有个“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
    //}

我的疑问只是,权限列表和角色列表是预定义的不?还是我理解的不对,不太清楚正确姿势是什么?


高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(1)
三叔

题主可以看下Laravel-RBAC

1.png

回到题主问题:权限列表和角色列表是不是预定义的

回答肯定是否定的;

使用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();

你可以在中间件中控制访问对象,你也可以在页面局部控制访问对象


热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!