bobahvas
@bobahvas
Senior Full Stack Developer

Возможно ли совместное использование$behaviors['access'] и $behaviors['authenticator']?

Могу ли я использовать эти 2 behavior`а в связке для controller`а, унаследованного от ActiveController?
Если да, то как?

Вот пример кода:
public function behaviors() {
        $behaviors = parent::behaviors();

        $behaviors['authenticator'] = [
            'class' => TokenAuth::className()
        ];

        $behaviors['access'] = array(
            'class' => \yii\filters\AccessControl::className(),
            'only' => ['login', 'registration', 'logout'],
            'rules' => array(
                [
                    'allow' => true,
                    'actions' => ['login', 'registration'],
                    'roles' => ['?'],
                    'verbs' => ['post']
                ],
                [
                    'allow' => true,
                    'actions' => ['logout'],
                    'roles' => ['@'],
                ],
            )
        );

        return $behaviors;
    }


В данном примере behavior['authenticator'] срабатывает всегда! Хотя хотелось бы, чтоб он срабатывал с учетом $behaviors['access'].

Например: По умолчанию все методы запрещены. Для не авторизованных пользователей доступны методы login и registration. Для авторизованных пользователей доступен метод logout.

P.S.
Не смотрите на 'class' => TokenAuth::className() он практически идентичен QueryParamAuth::className()
  • Вопрос задан
  • 2576 просмотров
Пригласить эксперта
Ответы на вопрос 1
@max_obninsk
Для фильтра authenticator можно указать действия, к которым фильтр применяться не должен:
$behaviors['authenticator'] = [
            'class' => TokenAuth::className(),
            'except' => ['login', 'registration']
        ];


www.yiiframework.com/doc-2.0/guide-structure-filte...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы