我想拒绝某些角色对控制器的访问。
所以我写了规则:
'access' => [
'class' => AccessControl::className(),
'rules' => [
[
// 'actions' => null,
'allow' => false,
'roles' => ['designer'],
],
],
],
尽管我的角色是 admin ,但它会抛出403。
当然,我可以写相反的话:
'allow' => true,
'roles' => ['admin', 'seller'],
但我想理解为什么第一种情况不起作用。
答案 0 :(得分:2)
我从the docs推断出当您使用AccessControl
时,所有现有规则都会按顺序进行评估。触发匹配请求的第一个规则,它确定发生了什么。最后,如果未触发任何规则,则默认情况下拒绝该请求。因此,如果您只想限制1个角色并接受其他所有内容,则应在allow
规则之后添加一条没有条件的deny
规则。