繁体   English   中英

如何在Yii的单元测试中检查Guest的访问权限?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM