在yii2中定义对所有用户(user,guest,admin等)的访问角色

时间:2019-10-14 11:17:05

标签: yii2 roles rbac

我使用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,默认情况下如何定义角色或访问所有用户的权限?

1 个答案:

答案 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

资源: