まず、この設定は間違っています。この部分は:
[
'actions' => ['logout', 'index'], // add all actions to take guest to login page
'allow' => true,
'roles' => ['@'],
],
は、さらに認証されたユーザーにのみlogout
とindex
アクションができるようになります。
[
'allow' => true,
'roles' => ['@'],
],
サイト全体にアクセスできるようにする必要があります。次に、AccessControl
または特定のコントローラの操作でアクセスをさらにカスタマイズすることができます。あなたの場合、デバッグだけが禁じられたページではありません。
ここではthis answerから関連する質問にコピー貼り付けされたと思います。
とデバッグがすでに基本的なアプリでアプリケーションの設定で有効になっている方法によって:
if (YII_ENV_DEV) {
// configuration adjustments for 'dev' environment
$config['bootstrap'][] = 'debug';
$config['modules']['debug'] = [
'class' => 'yii\debug\Module',
// uncomment the following to add your IP if you are not connecting from localhost.
//'allowedIPs' => ['127.0.0.1', '::1'],
];
// Below Gii is enabled too, code is omitted for brevity
}
ユーザーが認証されたときに、あなたは何の問題もなくデバッグ・モジュールにアクセスする必要があります。
注:この設定login
とすべてのコントローラのerror
アクションでは、非認証されたユーザーに許可されています。それには注意してください。他のコントローラーにも同様の名前のアクションが存在する可能性があります。
更新:実はあなたはさらに行くと$matchCallbackと、このソリューションをより柔軟にすることができます:それは内部のかどう$allowedControllers
リストで
'as access' => [
'class' => \yii\filters\AccessControl::className(),
'rules' => [
[
'matchCallback' => function ($rule, $action) {
$allowedControllers = [
'debug/default',
];
$allowedActions = [
'site/login',
'site/error',
];
$isAllowedController = in_array($action->controller->uniqueId, $allowedControllers);
$isAllowedAction = in_array($action->uniqueId, $allowedActions);
return $isAllowedController || $isAllowedAction;
},
'allow' => true,
],
[
'allow' => true,
'roles' => ['@'],
],
],
],
- 置き、完全に許さコントローラ(モジュール名を前に付けモジュール)を使用して完全に許可します(すべてのアクションを許可します)。
$allowedActions
リストに許可されたアクションを置きます(コントローラー名とモジュール名の前にコントローラー名が付いています)。あなたが役立つことができます(login
とerror
を含む)すべてのページにローカルサーバー上のデバッグモジュールへのフルアクセスを持つことができる方法
。
これはまた、異なるモジュール/コントローラからのアクション名の一致を防止します。