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多说了,只对执行检查权限的地方理解下,希望能帮到你。