我使用rbac(dektrium)和ACF检查访问项目(yii2)中的用户。我创建了一些角色,例如:admin,manager,suser,user等。我有一些操作,所有用户都可以使用它来进行查看操作。如何定义所有用户都可以使用视图动作的行为方法? 为此,我们在yii1中为用户“ *”分配了操作。
...
array('allow', // allow all users to perform 'index' and 'view' actions
'actions'=>array('view'),
'users'=>array('*'),
),
...
在yii2中使用此代码()
...
[
'allow' => true,
'actions' => ['view'],
'roles' => ['?'],
],
...
但是当管理员用户或管理员用户想要访问myController / view时显示为禁止。只有来宾可以访问myController / view,默认情况下如何定义角色或访问所有用户的权限?
答案 0 :(得分:0)
如果要允许所有人访问操作,则无需对该操作应用访问过滤器。为避免对特定操作应用访问过滤器,可以使用$except
的{{1}}属性。例如这样的
yii\filters\AccessControl
其他选择是使用角色public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),
'except' => ['view'],
'rules' => [
//rules for other actions ...
]
],
//other behaviors ...
];
}
(来宾)和?
(所有已登录用户)的组合,如下所示:
@
[
'allow' => true,
'actions' => ['view'],
'roles' => ['?', '@'],
]
中还有$only
属性,该属性仅允许将过滤器应用于显式命名的操作。但是出于安全原因,最好使用yii\filters\AccessControl
。
资源: