Yii2 rbac权限控制详解

首先本文所讲的权限控制有2种,一种是在数据库里建表,另一种是在框架里写文件,DbManager,PhpManager

第一种

我们先来讲第一种DbManager


1.yii config文件配置(我用的高级模板)(配置在common/config/main-local.php或者main.php)

'authManager' => [
 'class' => 'yii\rbac\DbManager',
 'itemTable' => 'auth_item',
 'assignmentTable' => 'auth_assignment',
 'itemChildTable' => 'auth_item_child',
  ],



2.然后windows+r 输入cmd命令 在您项目的根目录下输入

yii migrate(运行这个命令,生成user表)


yii migrate --migrationPath=@yii/rbac/migrations/ 运行此命令生成权限数据表


生成的表如下图


3.创建好表后接开始写代码了

<?php


namespace backend\controllers;
use Yii;
use yii\web\Controller;
use yii\filters\AccessControl;
class RbacController extends Controller
{

//判断有没有权限
    public function beforeAction($action){
        $name=$action->id;//获取方法名
        $name=ucfirst($name);//首字母大写(因为我下面定义的方法首字母是大写,没有这一步会报错,您也可以把方法写成小写的,就没有这一步了)
        $user = \Yii::$app->user;//获取用户登录得信息
        if (! $user->can($name)) {
            echo $this->renderContent('没有权限执行该操作');die;
        }else{
            return true;
        }


    }


    public function actionAdd()
    {
        return $this->renderContent('添加');
    }
    public function actionDelete()
    {
        return $this->renderContent('删除');
    }
    public function actionUpdate()
    {
        return $this->renderContent('更新');
    }
    public function actionSelect()
    {
        return $this->renderContent('查询');
    }


//写 一个方法
    public function actionAuth()
{      
          // 获取authMananger组件对象
        $auth = \Yii::$app->authManager;
        // 增加角色
       $wpf = $auth->createRole('管理员');
       $auth->add($wpf);
        


        //用户添加角色
        $auth->assign($wpf,1);


        // 增加权限
        $postAdd = $auth->createPermission('Add');
        $postAdd->description = '文章添加';
        $auth->add($postAdd);
        $postDelete = $auth->createPermission('Delete');
        $postDelete->description = '文章删除';
        $auth->add($postDelete);
        $postUpdate = $auth->createPermission('Update');
        $postUpdate->description = '文章编辑';
        $auth->add($postUpdate);
        $postSelect = $auth->createPermission('Select');
        $postSelect->description = '文章查看';
        $auth->add($postSelect);
 
 
        // 为角色赋予权限
        $auth->addChild($wpf, $postAdd);// 作者 添加文章
        $auth->addChild($wpf, $postUpdate);// 作者 编辑文章
        
 
     
}


   
}

写完之后用户只有添加和修改的权限,删除和查看没有权限


第二种

讲的方法是PhpManager

和上面配置的差不多

yii config文件配置(我用的高级模板)(配置在common/config/main-local.php或者main.php)

'authManager' => [
 'class' => 'yii\rbac\PhpManager',
  ],



 
然后在后台建一个rabc的文件夹运行上面写的php代码就会自动生成rbac里的两个文件

这是角色文件,如下图     


这是权限文件和角色所拥有的权限



   最后去界面检测用户是否有权限,这就是yii2简单的rabc权限控制,是不是很简单呀!!!


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值