我在尝试使用Yii
框架实现CAS
身份验证时遇到了一些麻烦。我下载了客户端类,当我不使用任何框架时,一切都在工作,但是当我尝试与Yii
集成时,验证似乎根本不起作用。
任何人都可以描述一下使用 yii 成功进行 CAS 验证的过程。
我将客户端文件放在/myapp/protected/vendor 目录下,然后将以下行放在控制器的开头
Yii::import('application.vendors.*');
require_once('CAS/CAS.php');
然后,我创建了使用我的 CAS 类的方法
public function casValidation()
{
phpCAS::client(CAS_VERSION_2_0, $server, $port, "/cas",false);
phpCAS::setNoCasServerValidation();
phpCAS::forceAuthentication();
if(isset($_REQUEST['logout']))
{
phpCAS::logout();
}
}
最后,我尝试从我的索引操作中进行验证
public function actionIndex()
{
$this->casValidation();
$this->render('index');
}
但是在网络浏览器中显示以下错误
PHP警告
include(CAS_Client.php) [function.include]:无法打开>流:没有这样的文件或目录
C:''app''vertrigo''Vertrigophp52''www''testyii''framework''YiiBase.php(427)
我错过了什么吗?我应该怎么做才能使事情顺利进行?
最后我让它工作了,结果证明我犯了几个错误。
首先,我不应该使用 require 语句。这样做的原因是 Yii alredy 负责通过导入方法加载类,如下所示。
Yii::import('application.vendor.CAS.*')
第二件事我在这个进口上有一个错字,我有
/* This is wrong */
Yii::import('application.vendors.CAS.*')
而不是
/* This is correct */
Yii::import('application.vendor.CAS.*')
所以Yii正在寻找不存在的供应商目录。
最后,要成功使用 import 方法,包含类的文件必须具有相同的名称。所以如果你有一个类名用户,你必须命名你的文件用户.php以便 Yii 可以成功加载它。