下面介绍一个 yii2 的 Rbac 权限管理设置,闲话少说,直接上代码,
1、首先我们要在组件里面配置一下 Rbac ,如下所示(common/config/main-local.php或者main.php)。
'authManager' => [ 'class' => 'yiirbacDbManager', 'itemTable' => 'auth_item', 'assignmentTable' => 'auth_assignment', 'itemChildTable' => 'auth_item_child', ], 当然,在配置里面也可以设置 默认角色,只是我没写。Rbac 支持两种类,PhpManager 和 DbManager ,这里我使用 DbManager 。
yii migrate --migrationPath=@yii/rbac/migrations/ 运行此命令生成权限数据表
2、配置完毕,下面我们尝试着创建一个 许可 Permiassion,代码如下
// 创建许可 public function createPermission($item) { $auth = Yii::$app->authManager;
$createPost = $auth->createPermission($item); $createPost->description = '创建了 ' . $item . ' 许可'; $auth->add($createPost); }
3、好的,许可我们就创建完成了,下面我们创建一个 角色吧 roles
// 创建角色 public function createRole($item) { $auth = Yii::$app->authManager;
$role = $auth->createRole($item); $role->description = '创建了 ' . $item . ' 角色'; $auth->add($role); }
4、好的,就是这么简单,不要激动,下面更简单,给角色分配许可,上代码
// 为角色分配许可 public function createEmpowerment($items) { $auth = Yii::$app->authManager;
$parent = $auth->createRole($items['name']); $child = $auth->createPermission($items['description']);
$auth->addChild($parent,$child); }
5、好的,分配许可也创建完成了,我操,太尼玛简单了,继续上代码,给角色分配用户
// 给用户分配角色 public function assign($item) { $auth = Yii::$app->authManager; $reader = $auth->createRole($item['name']); $auth->assign($reader,$item['description']); }
6、好的好的,就是这么简单,我自己都他妈不敢相信啊,你相信吗???最后一步,验证用户是否有权限
public function beforeAction($action) { $action = Yii::$app->controller->action->id; if(Yii::$app->user->can($action)){ return true; }else{ throw new yiiwebUnauthorizedHttpException('对不起,您现在还没获此操作的权限'); } }
好了,一口气都他妈写完了,老爽了。当然,可以创建就一定可以修改和删除,修改和删除都是多表关联操作的, Yii也为我写好了方法,当然你也可以自己去写,都是小意思了。
数据库sql文件地址 /vendor/yiisoft/yii2/rbac (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|