@jekahm

Не срабатывает правило Access Control Filter в Yii2?

Доброго времени суток!
Пытаюсь реализовать фильтр доступа таким образом, чтобы ко всем экшнам контроллера коментов имели доступ только авторизованные юзеры, а к экшну удаление комента - только юзер с ролью moderator.
Сделал это след. образом:
class CommentsController extends FrontendController
{

    public function behaviors()
    {
        return [
            'verbs' => [
                'class' => VerbFilter::className(),
                'actions' => [
                    'create' => ['post'],
                    'add' => ['post'],
	                'delete' => ['post'],
                ],
            ],
            'access' => [
                'class' => \yii\filters\AccessControl::className(),
                'rules' => [
                    [
                        'allow' => true,
                        'roles' => ['@'],
                    ],
	                [
		                'allow' => true,
		                'actions' => ['delete'],
		                'roles' => ['moderator'],
	                ],
                ],
            ],
        ];
    }
...

Но в результате к экшну удаления комента по-прежнему имеют доступ все авторизованные юзеры.
В чем может быть проблема?
Заранее благодарен!
  • Вопрос задан
  • 1028 просмотров
Пригласить эксперта
Ответы на вопрос 1
slo_nik
@slo_nik Куратор тега Yii
Добрый вечер
[[yii\filters\AccessRule::roles|roles]]: задаёт роли пользователей, соответствующих этому правилу. Распознаются две специальные роли, которые проверяются с помощью [[yii\web\User::isGuest]]:

?: соответствует гостевому пользователю (не аутентифицирован),
@: соответствует аутентифицированному пользователю.
Использование других имён ролей будет приводить к вызову метода [[yii\web\User::can()]], который требует включения RBAC (будет описано дальше). Если свойство пустое или не задано, то правило применяется ко всем ролям.


https://github.com/yiisoft/yii2/blob/master/docs/g...
Ответ написан
Ваш ответ на вопрос

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

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