首页 文章

使用Yii Framework进行CAS身份验证

提问于
浏览
1

我正试图用 Yii 框架实现 CAS 身份验证时遇到一些麻烦 . 我downloaded the client classes并且当我没有使用任何框架时一切正常,但是当我尝试与 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');
}

但在Web浏览器中显示以下错误

PHP警告包括(CAS_Client.php)[function.include]:无法打开>流:没有这样的文件或目录C:\ app \ vertrigo \ Vertrigophp52 \ www \ testyii \ framework \ YiiBase.php(427)

我错过了什么吗?我该怎么办才能让事情奏效?

1 回答

  • 0

    最后,我得到了它的工作,结果我犯了几个错误 .

    首先,我不应该使用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正在寻找不存在的供应商目录 .

    最后,要成功使用导入方法,包含您的类的文件必须具有相同的名称 . 因此,如果您有一个类名用户,则必须将文件命名为user.php,以便Yii可以成功加载它 .

相关问题