Yii2 AccessControl - 拒绝访问的奇怪行为

时间:2018-02-01 14:34:37

标签: php yii2

我想拒绝某些角色对控制器的访问。

所以我写了规则:

'access' => [
            'class' => AccessControl::className(),
            'rules' => [
                [
                  //  'actions' => null,
                    'allow' => false,
                    'roles' => ['designer'],
                ],
              ],
           ],

尽管我的角色是 admin ,但它会抛出403。

当然,我可以写相反的话:

'allow' => true,
'roles' => ['admin', 'seller'],

但我想理解为什么第一种情况不起作用。

1 个答案:

答案 0 :(得分:2)

我从the docs推断出当您使用AccessControl时,所有现有规则都会按顺序进行评估。触发匹配请求的第一个规则,它确定发生了什么。最后,如果未触发任何规则,则默认情况下拒绝该请求。因此,如果您只想限制1个角色并接受其他所有内容,则应在allow规则之后添加一条没有条件的deny规则。