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