PHPIN.NET

 找回密码
 立即注册
查看: 4935|回复: 0

[基础应用] yii2 rbac权限学习笔记

[复制链接]

469

主题

31

回帖

5497

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5497
发表于 2015-5-19 19:54:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
yii2 rbac权限学习笔记

1、首先我们要在组件里面配置一下 Rbac ,如下所示(common/config/main-local.php或者main.php)。
  1. 'authManager' => [
  2.   'class' => 'yii\rbac\DbManager',
  3.   'itemTable' => 'auth_item',
  4.   'assignmentTable' => 'auth_assignment',
  5.   'itemChildTable' => 'auth_item_child',
  6.    ],
复制代码
当然,在配置里面也可以设置 默认角色,只是我没写。Rbac 支持两种类,PhpManager 和 DbManager ,这里我使用 DbManager 。
yii migrate --migrationPath=@yii/rbac/migrations/ 运行此命令生成权限数据表
2、配置完毕,下面我们尝试着创建一个 许可 Permiassion,代码如下
  1. public function createPermission($item)
  2.     {
  3.         $auth = Yii::$app->authManager;


  4.         $createPost = $auth->createPermission($item);
  5.         $createPost->description = '创建了 ' . $item . ' 许可';
  6.         $auth->add($createPost);
  7.     }
复制代码

3、许可我们就创建完成了,下面我们创建一个 角色吧 roles
  1. public function createRole($item)
  2.     {
  3.         $auth = Yii::$app->authManager;


  4.         $role = $auth->createRole($item);
  5.         $role->description = '创建了 ' . $item . ' 角色';
  6.         $auth->add($role);
  7.     }
复制代码

4、下面更简单,给角色分配许可,上代码
  1. static public function createEmpowerment($items)
  2.     {
  3.         $auth = Yii::$app->authManager;


  4.         $parent = $auth->createRole($items['name']);
  5.         $child = $auth->createPermission($items['description']);


  6.         $auth->addChild($parent, $child);
  7.     }
复制代码

5、分配许可也创建完成了,给角色分配用户
  1. static public function assign($item)
  2.     {
  3.         $auth = Yii::$app->authManager;
  4.         $reader = $auth->createRole($item['name']);
  5.         $auth->assign($reader, $item['description']);
  6.     }
复制代码

6、最后一步,验证用户是否有权限
  1. public function beforeAction($action)
  2.     {
  3.         $action = Yii::$app->controller->action->id;
  4.         if(\Yii::$app->user->can($action)){
  5.             return true;
  6.         }else{
  7.             throw new \yii\web\UnauthorizedHttpException('对不起,您现在还没获此操作的权限');
  8.         }
  9.     }
复制代码




数据库sql文件地址  /vendor/yiisoft/yii2/rbac
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|PHPIN.NET ( 冀ICP备12000898号-14 )|网站地图

GMT+8, 2024-3-28 20:48

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表