Yii Rbac权限

来源:互联网 发布:优化游戏的软件 编辑:程序博客网 时间:2024/06/05 05:22

yii2.0框架自带的rbac权限:


一、先是生成Rbac的表、

第一步,

首先我们要在配置文件的组件(component)里面配置一下 Rbac,这里有两种方法, 可以在

'class' => 'yii\rbac\DbManager',进行操作(数据库),也可以在 
'class' => 'yii\rbac\PhpManager', 下进行操作。

'authManager' => [        'class' => 'yii\rbac\DbManager',         'itemTable' => 'auth_item',         'assignmentTable' => 'auth_assignment',         'itemChildTable' => 'auth_item_child',],
第二部,打开cmd进入到你的目录下:
输入 yii migrate   生成user表
yii migrate --migrationPath=@yii/rbac/migrations/  生成rbac的所有表。
二、rbac就是给用户赋角色,给角色加权限。
第一步, 我们自己去注册用户,这里就不过去解释了
第二部,创建角色,创建角色前,我们要去@app下去建立一个rbac的文件夹,如:你在后台backend下面操作的,就在backend下面建立文件夹
public function actionCreaterole(){// 获取authMananger组件对象$auth = \Yii::$app->authManager;// 创建角色$author = $auth->createRole('你要创建的角色名');}
会在rbac文件夹下面自动生成一个items.php的文件,里面就是你要的角色名。
第三部、 为用户赋角色
$auth = \Yii::$app->authManager;$author = $auth->createRole('你的角色名1');$reader = $auth->createRole('你的角色名2');$auth->assign($author, 1);$auth->assign($reader, 2);
这里将角色名1赋给用户ID为1的,角色名2赋给用户id为2的, 这时,会在rbac文件里面生成assignments.php的一个文件,里面就是你的用户Id所对应的角色。type=1是角色,type=2为权限
第四步、创建权限
    $auth = Yii::$app->authManager;        $createPost = $auth->createPermission($name);        $createPost->description = '创建了 ' . $name. ' 权限';        $auth->add($createPost);
给角色赋权限:
  $auth->addChild($author, $postAdd);$author 是你的角色名。        $auth->addChild($author, $postUpdate);、
这样就你所赋的那个角色就有两个权限了。
第五步、判断用户是否有权限:
  public function beforeAction($action)    {          $user = \Yii::$app->user;          //$action->id获取方法名,然后让首字母大写,否则无法运行        $actionName = ucfirst($action->id);        if (! $user->can($actionName))        {            //如果没有,执行没有权限操作            echo  $this->renderContent('没有权限执行该操作');exit;        }        return true;     }
这里用的是can方法进行判断。
就这样,基本的rbac权限就完成了。
原创粉丝点击