Редиректить неавторизованных юзеров на страницу авторизации

Всё про контроль доступа пользователей: фильтры, RBAC, проверки
Ответить
Maksat1991
Сообщения: 57
Зарегистрирован: 2016.10.16, 00:15

Редиректить неавторизованных юзеров на страницу авторизации

Сообщение Maksat1991 »

Есть кастомный компонент

Код: Выделить всё

class Controller extends \yii\web\Controller
от которого наследуются все остальные контроллеры.

Надо в этом компоненте сделать проверку, если гость, то редиректить на страницу авторизации.
Есть behavior access, но его надо ставить в каждом контроллере. А я хочу сделать это один раз, в этом компоненте. Тут behavior не поможет?
Если не поможет, то каким образом можно сделать проверку юзера и редирект?
Maksat1991
Сообщения: 57
Зарегистрирован: 2016.10.16, 00:15

Re: Редиректить неавторизованных юзеров на страницу авторизации

Сообщение Maksat1991 »

ElisDN писал(а): 2017.09.20, 11:48 behaviors поможет.
Тогда в контроллерах надо будет не возвращать массив behaviors, а создавать behaviors, мёрджить с родительскими, и возвращать общий список:

Код: Выделить всё

    public function behaviors()
    {
        $new = [
            'access' => [
                ...
            ],
        ];
        
        $old = parent::behaviors();
        $full = ArrayHelper::merge($old, $new);
        return $full;
    }
Если так, то это очень неудобно
Аватара пользователя
ElisDN
Сообщения: 5841
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Редиректить неавторизованных юзеров на страницу авторизации

Сообщение ElisDN »

Просто пишите удобнее:

Код: Выделить всё

public function behaviors()
{
    return ArrayHelper::merge(parent::behaviors(), [
        'access' => [
            ...
        ],
    ]);
}
Либо поместите все контроллеры в модуль и впишите behaviors() у него.
Kykiii911
Сообщения: 2
Зарегистрирован: 2017.09.25, 10:28

Re: Редиректить неавторизованных юзеров на страницу авторизации

Сообщение Kykiii911 »

Здесь 2 варианта, или модуль, или какой-то BaseController с behavior access и все другие наследуются от него
Ответить