web-dev-qa-db-ja.com

Yii2グローバルフィルター/ユーザーが最初に認証するように強制する動作

私のYii2アプリケーションでは、すべてのユーザーを強制的に認証しようとしています。まだ認証されていない場合は、ログインページにリダイレクトする必要があります。

Yii1では、ユーザーがログインしているかどうかをチェックするクラスを作成し、そのクラスをメインの構成ファイルのonBeginRequest動作にアタッチすることでこれを行いました。

// Yii 1
'behaviors' => array(
    'onBeginRequest' => array(
        'class' => 'application.components.RequireLogin',
    )
),

Yii2で同じ動作をするにはどうすればよいですか?これを行うために動作を使用できることはわかっていますが、この動作をメインの構成ファイルに追加したくないので、すべての要求の認証が最初にチェックされます。

動作動作メソッドは次のようになります。

// Yii2
public function behaviors() {
    return [
        'access' => [
            'class' => AccessControl::className(),
            'rules' => [
                [
                    'actions' => ['login', 'error'],
                    'allow' => true,
                ],
                [
                    'allow' => true,
                    'roles' => ['@'],
                ],
            ],
        ],
    ];
}
25
Jap Mul

さて、次のコードを追加する必要がありました以下'components' => [...]

 'as beforeRequest' => [
    'class' => 'yii\filters\AccessControl',
    'rules' => [
        [
            'actions' => ['login', 'error'],
            'allow' => true,
        ],
        [

            'allow' => true,
            'roles' => ['@'],
        ],
    ],
],

フォーマットの詳細を読む: http://www.yiiframework.com/doc-2.0/guide-concept-configurations.html#configuration-format

30
Jap Mul