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多說了,只對執行檢查權限的地方理解下,希望能幫到你。