ユーザー アクセス制御にauth拡張機能を使用しています。それぞれに複数のコントローラーを備えた複数のモジュールがあります。モジュールベースでアクセスを制御したいと思います。として操作を追加しようとしましたが、モジュール内のコントローラーにアクセスしようとするとmoduleId.*
、401 アクセス拒否エラーが発生します。私の現在の解決策は、各コントローラーの操作を追加しmoduleId.controllerId.*
、これらの操作を各モジュールのタスクに結合することです。モジュール全体のアクセス制御を追加するより良い方法はありますか?
質問する
178 次
1 に答える
2
モジュール全体のコントロールの実装はありませんでした。/auth/filters/AuthFilter.php
次のようにファイルを変更しました。
protected function preFilter($filterChain)
{
$itemName = '';
$controller = $filterChain->controller;
if (($module = $controller->getModule()) !== null){
$itemName=str_replace('/','.',$module->getId()).'.';//for nested modules
if (Yii::app()->user->checkAccess($itemName . '*')) return true;//Added this
}
$itemName .= $controller->getId();
...
編集
Github リポジトリの最新コードには、この修正が含まれています。
于 2013-04-07T01:53:01.280 に答える