Как я могу запретить доступ для пользователей с ролью члена доступа к бэкэнду в yii2?

Я хочу запретить пользователям роли члена доступ к серверной части. Я использую стандартную RBAC из yii2 расширенной для авторизации, но не могу добавить роли в правилах доступа для правил:

rules => [
    [                       
        'actions' => ['login', 'error'],
        'allow' => TRUE,                                              
    ]

в siteController бэкенда. Если есть какой-то способ сделать это, я буду благодарен.


person elmajico    schedule 12.05.2016    source источник


Ответы (3)


Если вы хотите запретить доступ только участнику и разрешить your_role, вы можете

public function behaviors()
{
    return [
        'access' => [
            'class' => AccessControl::className(),
            'rules' => [
                [
                   'allow' => false,
                   'roles' => ['member']
                ],
                [

                    'allow' => true,
                    'roles' => ['your_role'],
                ],
            ],
        ],
        'verbs' => [
            'class' => VerbFilter::className(),
            'actions' => [
                'logout' => ['post'],
            ],
        ],
    ];
}
person scaisEdge    schedule 12.05.2016

Нет необходимости программировать поведение каждого внутреннего контроллера. Вы можете добавить тот же код в конец массива $config['components'] backend/config/main.php:

'as beforeRequest' => [
    'class' => \yii\filters\AccessControl::className(),
    'rules' => [
        [                       
            'actions' => ['login', 'error'],
            'allow' => true,                                              
        ],
        [
            'allow' => false,
            'roles' => ['member'],
        ],
    ],
    'denyCallback' => function () {
        return Yii::$app->response->redirect(['frontend']);
    },
],
person Alexandr Kalashnikov    schedule 12.05.2016

Попробуй это ,

public function behaviors()
{
    return [
        'verbs' => [
            'class' => VerbFilter::className(),
            'actions' => [
                'delete' => ['post'],
            ],
        ],
        'access' => [
            'class' => AccessControl::className(),
            // We will override the default rule config with the new  AccessRule class
            'ruleConfig' => [
                'class' => AccessRule::className(),
            ],
            'only' => ['index','create', 'update', 'delete'],
            'rules' => [
                [
                    'actions' => ['index','create'],
                    'allow' => true,
                    // Allow users, moderators and admins to create
                    'roles' => [
                        User::ROLE_USER,
                        User::ROLE_MODERATOR,
                        User::ROLE_ADMIN
                    ],
                ],
                [
                    'actions' => ['update'],
                    'allow' => true,
                    // Allow moderators and admins to update
                    'roles' => [
                        User::ROLE_MODERATOR,
                        User::ROLE_ADMIN
                    ],
                ],
                [
                    'actions' => ['delete'],
                    'allow' => true,
                    // Allow admins to delete
                    'roles' => [
                        User::ROLE_ADMIN
                    ],
                ],
            ],
        ],
    ];
}
person Mahesh Joshi    schedule 12.05.2016