@good_beginer

Как грамотно настроить Access Control для guest?

я хочу открыть доступ на главную(index.php) но при этом заблокировать все остальные адреса.
Можно сделать на yii2??
Думаю над if(Yii::app()->user->isGuest) $this->redirect(Yii::app()->getModule('user')->loginUrl); но это прям на крайний случай.
<?php
return [
    'aliases' => [
        '@bower' => '@vendor/bower-asset',
        '@npm'   => '@vendor/npm-asset',
    ],
    'vendorPath' => dirname(dirname(__DIR__)) . '/vendor',
    'name' =>  "Hello_World",
    'modules' => [
        'admin' => [
            'class' => 'mdm\admin\Module',
        ],
     ],

    'as access' => [
        'class' => 'mdm\admin\components\AccessControl',
        'allowActions' => [
            'site/*',
        ],
    ],

    'components' => [
        'cache' => [
            'class' => 'yii\caching\FileCache',
        ],
        'user' => [
            'identityClass' => 'mdm\admin\models\User',
            'loginUrl' => ['admin/user/login'],
            'class' => 'yii\web\User'
        ],

        'authManager' => [
            'class' => 'yii\rbac\PhpManager',
        ],
        'authManager' => [
            'class' => 'yii\rbac\PhpManager',
            'defaultRoles' => ['user', 'admin'],
            'itemFile' => '@common/config/rbac/items.php',
            'assignmentFile' => '@common/config/rbac/assignments.php',
            'ruleFile' => '@common/config/rbac/rules.php'
        ],
        'formatter' => [
            'class' => 'yii\i18n\Formatter',
            'dateFormat' => 'dd-MM-yyyy',
            'decimalSeparator' => ',',
            'thousandSeparator' => ' ',
       ],
       
    ],

];
  • Вопрос задан
  • 776 просмотров
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
конфиг Вам в руки и события в помощь:
'on beforeAction' => function($event){
      Yii::$app->controller->attachBehavior('',[
          'class' => \yii\filters\AccessControl::className(),
          'except' => ['login','error','index'],
          'rules' => [
              [
                  'allow' => true,
                  'roles' => ['@'],
              ],
          ],
      ]);
    },

Обратите внимание, что экшенов 3. Если не открыть login и error всем, то будет печалька.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы