YII权限分配 执行检查理解 通俗易懂

1.本文章在后台搭建好模板的情况下进行,
在这里插入图片描述
这里我一直很好奇,yii 的rbac是在哪个类去执行检查权限(判断是否该用户用本次操作权限)的,经过一番研究,自己理解的就写下来分享下。写的不好的地方话希望能评论下来。

** yii执行检查用户权限的重点是在 main.php下的配置项,

  //components数组中加入authManager组件,有PhpManager和DbManager两种方式,    
        //PhpManager将权限关系保存在文件里,这里使用的是DbManager方式,将权限关系保存在数据库.  
        "authManager" => [        
            "class" => 'yii\rbac\DbManager', //这里记得用单引号而不是双引号      
            "defaultRoles" => ["guest"],  
        ],  
        //这里是重点    引入AccessControl类是关键   这个类的位置我在下面会说
 	  'as access' => [
	        'class' => 'mdm\admin\components\AccessControl',
	        'allowActions' => [
	            //这里是允许访问的action
	    	        'site/*', //允许访问的节点   设置登录界面不执行检查
	         ]
      ]

理解:yii每次执行都会先去加载配置项,所以用户是否拥有该权限在加载配置项时就完成了检查。

下面说下AccessControl类:
路径是:项目名\vendor\mdmsoft\yii2-admin\components\AccessControl.php

一般在登录类里面使用AccessControl,
use yii\filters\AccessControl;

 public function behaviors()
    {
        return [
            'access' => [
                'class' => AccessControl::className(),
                'rules' => [
                    [
                        'actions' => ['login', 'error'],
                        'allow' => true,
                    ],
                    [
                        'actions' => ['logout', 'index'],
                        'allow' => true,
                        'roles' => ['@'],//表示登录用户才可以访问
                    ],
                ],
            ],
            'verbs' => [
                'class' => VerbFilter::className(),
                'actions' => [
                    'logout' => ['post','get'],
                ],
            ],
        ];
    }

重点:
AccessControl提供基于yii\filters\AccessControl::rules规则的访问控制,
AccessControl作用是对于用户,ip,权限规则请求做检查,
VerbFilter检查请求动作的HTTP请求方式是否允许执行, 如果不允许,会抛出HTTP 405异常。

因为yii rbac在搭建后台是都已经完成了,所以就不对后台的rbac多说了,只对执行检查权限的地方理解下,希望能帮到你。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值