MasterGerold
@MasterGerold

Почему не срабатывает denyCallback yii2?

Доброго времени суток! Использую шаблон "Advanced", есть такой кусок кода в SiteController:
return [
    'access' => [
        'class' => AccessControl::className(),
        'only' => ['logout', 'signup', 'blog'],
        'rules' => [
            [
                'actions' => ['signup'],
                'allow' => true,
                'roles' => ['admin'],
                'denyCallback' => function ($rule, $action) {
                    return $action->controller->redirect('index');
                },
            ],
            [
                'actions' => ['logout'],
                'allow' => true,
                'roles' => ['@'],
            ],
            [
                'actions' => ['blog'],
                'allow' => true,
                'roles' => ['admin'],
            ],
        ],
    ],
    'verbs' => [
        'class' => VerbFilter::className(),
        'actions' => [
            'logout' => ['post'],
        ],
    ],
];

Когда я захожу по адресу /site/signup то меня бросает на /site/login хотя как я думаю должен срабатывать denyCallback но почему то этого не происходит. Если надо ещё куски кода, пишите в комменты, добавлю. Заранее благодарен за ответы!
  • Вопрос задан
  • 634 просмотра
Пригласить эксперта
Ответы на вопрос 2
qonand
@qonand
Software Engineer
denyCallback срабатывает только для запрещающих правил (для тех у которых параметр allow выставлен в false), у Вас же разрешающее правило
Ответ написан
@profaller
denyCallback принимает сам AccessControl, а не конкретный rule. Просто перенесите его в конфигурацию AccessControl и все заработает.
Ответ написан
Ваш ответ на вопрос

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

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