zhex
(Luckyxz)
1
<?php
public function accessRules() {
return array(
array("deny",
"users" => array("?"),
),
array("allow",
"roles" => array("Manager"),
),
array("deny",
"users" => array("*"),
),
);
}
?>
有没有告诉我上面这段代码哪里写错了, 我用manager权限访问,还是访问不了, 感觉上allow的那段代码没有起到作用
sharehua
(8080268)
2
第一个不应该是deny。这样都给过滤光了。
还有
public function filters(){
return array(
'accessControl', // perform access control for CRUD operations
);
}
这个方法+了吗?
你在qq群里吗?
zhex
(Luckyxz)
3
第一个deny只是过滤guest用户啊, 我看手册上说rule是一个个match下来的,当遇到第一个符合条件的停止。
不好意思,我不知道qq群号码是多少
qiang
(Qiang Xue)
4
你用哪个版本?1.0.3有个bug,是关于role大小写的。用1.0.4吧。
zhex
(Luckyxz)
5
我用的是1.04的版本。 现在我把一个deny guest部分删掉,工作正常。 想和强确认下,allow是不是一定要放在deny的前面?
qiang
(Qiang Xue)
7
你的理解没错,“rule是一个个match下来的,当遇到第一个符合条件的停止。”
奇怪的是为什么一个拥有manager权限的用户会匹配第一条guest rule。你确定用户已经登录成功了?
zhex
(Luckyxz)
8
我已经登录成功了。其实没有匹配guest rule, 我觉得是程序忽略了匹配manager allow的rule,直接执行deny all的rule。 当我保留第一句guest rule,删除最后一句deny all的时候,任何role都可以访问。
zhex
(Luckyxz)
10
大小写方面是肯定没有问题的, 我都是复制粘贴, 难道这个是bug?
qiang
(Qiang Xue)
11
你在action代码执行一下checkAccess('Manager')看看是true还是false?
zhex
(Luckyxz)
12
测试过,一直是true, 我觉得应该不是这个问题, 因为当deny guest被去掉以后,一切的判断都是正常的。
qiang
(Qiang Xue)
13
是比较奇怪。你能在CAccessControlFilter.php的isUserMatched()函数里插入一些语句看看用户是否匹配?
zhex
(Luckyxz)
14
原来一直忘了把公司电脑上的版本升级到1.04。 在家里1.04的版本上已经通过了,耽误了qiang这么多时间真不好意思。