如何限制对RBAC模块本身的访问?
我使用yii\rbac\DbManager
并在后端创建了一个模块(授权)以进行权限分配,创建auth项目,现在我想确保只有管理员可以访问此模块!
在控制器中我使用过这个并且它工作正常。
use yii\filters\AccessControl;
class MyController extends Controller
{
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),
'only' => ['index', 'view', 'create', 'update', 'delete'], //only be applied to
'rules' => [
[
'allow' => true,
'actions' => ['index', 'view', 'create', 'update','delete'],
'roles' => ['admin'],
],
],
],
.........
我把它放在Authorization.php初始化函数中但没有任何反应,所有auth控制器都是可访问的。
public function init()
{
if(\Yii::$app->user->can('admin'))
parent::init();
// custom initialization code goes here
}
后端/配置/ main.php
'modules' => [
'authorization' => [
'class' => 'backend\modules\authorization\Authorization',
],
],
答案 0 :(得分:2)
在您的模块类中,您可以添加此方法
public function beforeAction($action)
{
if (!parent::beforeAction($action)) {
return false;
}
if (!\Yii::$app->user->can('admin')) {
throw new \yii\web\ForbiddenHttpException('You are not allowed to access this page.');
}
return true;
}