Yii2 advanced: как установить фильтр для входа пользователя в бэкэнд?

Теперь все пользователи могут войти в систему через интерфейс и серверную часть.

как я могу установить лимит и фильтр для входа в бэкэнд?!

это мой main-local.php в бэкенде

    'modules' => [
    'user' => [
        'class' => 'dektrium\user\Module',
        'enableUnconfirmedLogin' => true,
        'confirmWithin' => 21600,
        'cost' => 12,
        'controllerMap' => [
            'admin' => 'backend\controllers\user\AdminController',
            'profile' => 'backend\controllers\user\ProfileController',
            'recovery' => 'backend\controllers\user\RecoveryController',
            'registration' => 'backend\controllers\user\RegistrationController',
            'security' => 'backend\controllers\user\SecurityController',
            'settings' => 'backend\controllers\user\SettingsController',
        ],
        'admins' => ['admin']
    ],

]

Я хочу, чтобы только админ мог войти в бэкенд


person Saltern    schedule 10.02.2018    source источник
comment
если вы используете расширенный шаблон с RBAC, вам не нужно ничего делать, обычный пользователь не сможет войти в бэкэнд. поскольку файлы cookie сеанса backend и frontend разделены.   -  person Muhammad Omer Aslam    schedule 10.02.2018


Ответы (1)


Вы можете использовать rbac и установить роль администратора, затем в контроллере:

public function behaviors()
    {
        return [
            'access' => [
                'class' => AccessControl::className(),
                'rules' => [
                    [
                        //if actions not set, it applies to all actions.
                        //'actions' => ['index'],
                        'allow' => true,
                        //the 'admin' is your RBAC auth item.
                        'roles' => ['admin'],
                    ],
                ],
            ],
        ];
    }

Подробнее о RBAC см. в документе RBAC.

Вы также можете установить фильтр контроллера, просто добавив IP-адрес

     //'192.168.*' matches all IP addresses in the segment '192.168.'. If this option is empty or not set, it means this rule applies to all IP addresses.
    'ips'=> ['192.168.*'],

И, наконец, если вы хотите установить глобальный фильтр управления доступом, просто перейдите по ссылке чтобы сделать это глобально без наследования.

person Yuzuha    schedule 10.02.2018
comment
это не запрещает вход в систему, а вместо этого дает 403, если вы получаете доступ к этому конкретному контроллеру - person Muhammad Omer Aslam; 11.02.2018