还是权限访问的问题



<?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(


		&#039;accessControl&#039;, // 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这么多时间真不好意思。