[英]How to check access for Guest in unit tests in Yii?
我有一个用Yii 1.1.8编写的应用程序。
我目前正在开发一套单元测试,以涵盖用户访问权限。 我正在使用yii-rights模块,但发现了一件奇怪的事情。
Yii::app()->user->checkAccess($operation)
在单元测试中总是返回false(在浏览器中运行应用程序时不返回)。
我找到了一种解决方法,我称
Yii::app()->getAuthManager()->checkAccess($operation, $userId)
检查经过身份验证的用户的访问权限,但是有一个问题-我有一些来宾用户需要访问的authItems。 而且我的测试失败了,因为Guest用户没有ID,所以我无法从CDbAuthManager类调用CheckAccess()。 由于某些错误,CWebUser的checkAccess()也失败。
在每次测试之前,我都调用身份验证代码,该代码可以工作-正确地授予(或拒绝,取决于权限配置)对已身份验证用户的访问,并且Yii :: app()-> user的访问权限也已正确设置。
所以我的问题是:如何使Yii :: app()-> user-> checkAccess($ operation)在单元测试中工作,或者有什么办法让某种来宾用户ID可以使用其他checkAccess( )功能? 还是有其他我不知道的检查访问的方法?
好的,我发现该怎么办。 实际上,这很简单。
我仅将Guest角色授予了一个用户,我对此用户进行身份验证,因此可以获取Guest用户ID:D。
希望这可以帮助某人:)。 如果有人知道更好的方法,我将很乐意阅读:D。
虽然年代久远,但可能会对其他人有所帮助,您只需在authManager的defualtRoles中为guest添加角色
'authManager'=>array(
'class'=>'CDbAuthManager',
'connectionID'=>'db',
'defaultRoles'=>array('Guest'),
),
因此不需要为访客添加用户
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.