Yiiフレームワーク-モジュールのすべてのコントローラーに同じアクセスルールを指定する方法

StackOverflow https://stackoverflow.com/questions/1612472

  •  06-07-2019
  •  | 
  •  

質問

管理者固有の操作用のモジュールを作成しました。すべてのコントローラーに同じアクセスルールを記述したくはありません。きれいなコーディングスタイルではありません。

役に立ちましたか?

解決

1つのソリューションは、認証されたすべてのクラスに共通のBaseClassコントローラーを拡張することです。

この方法で1回書くことができます。

他のヒント

Moduleは、分離されたディレクトリ構造を持つサブアプリケーションのようなものです。許可のフィルタリングまたはチェックについては責任を負いません。

唯一の重要な解決策は、イスマエルが提案したように新しい抽象化を定義することです。

class ExtendedController
{
    public function rules()
    {
        return array_merge(parent::rules(), array(
           // your rules
        ));
    }
}

Ismaelとpestaaの選択は、実装するのに非常に速くても非常に優れていますが、RBACモデルのようなより強力な代替手段を常にお勧めします。 Yii RBAC の非常に優れたGUIを http://code.google.com/p/srbac/

これは私のために働いた:

class extendedController extends baseController
{
    public function accessRules()
    {
        return array_merge(

            // This controller's rules are added first:
            // Allow all users to call the 'hello' action.
            array(
                array('allow',
                    'actions'=>array('hello'), 
                    'users'=>array('*'),
                ),
            ),

            // BaseController rules are added last, especially
            // if the last rule in the baseController denies all
            // users that were not allowed yet.
            parent::accessRules()
        );
    }

    public function actionHello()
    {
        echo('Hello!');
    }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top