2

ユーザー アクセス制御にauth拡張機能を使用しています。それぞれに複数のコントローラーを備えた複数のモジュールがあります。モジュールベースでアクセスを制御したいと思います。として操作を追加しようとしましたが、モジュール内のコントローラーにアクセスしようとするとmoduleId.*401 アクセス拒否エラーが発生します。私の現在の解決策は、各コントローラーの操作を追加しmoduleId.controllerId.*、これらの操作を各モジュールのタスクに結合することです。モジュール全体のアクセス制御を追加するより良い方法はありますか?

4

1 に答える 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 に答える