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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章