使用 Yii 框架进行 CAS 身份验证
Posted
技术标签:
【中文标题】使用 Yii 框架进行 CAS 身份验证【英文标题】:CAS Authentication with Yii Framework 【发布时间】:2013-11-01 14:56:32 【问题描述】:我在尝试使用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');
但是在网页浏览器中显示如下错误
PHP 警告
include(CAS_Client.php) [function.include]: 未能打开 >stream: 没有这样的文件或目录
C:\app\vertrigo\Vertrigophp52\www\testyii\framework\YiiBase.php(427)
我错过了什么吗?我应该怎么做才能让事情顺利进行?
【问题讨论】:
“似乎根本不起作用” 是一个模糊的指控,“谁能描述一下成功使用 yii 进行 CAS 验证的过程” i> 是一个模糊的期望;) 【参考方案1】:终于搞定了,结果发现我犯了几个错误。
首先,我不应该使用 require 语句。原因是 Yii 已经通过 import 方法加载类,如下所示。
Yii::import('application.vendor.CAS.*')
第二件事,我在这个导入上有错字,我有
/* This is wrong */
Yii::import('application.vendors.CAS.*')
而不是
/* This is correct */
Yii::import('application.vendor.CAS.*')
所以 Yii 正在寻找不存在的供应商目录。
最后,要成功使用导入方法,包含您的类的文件必须具有相同的名称。所以如果你有一个类名 user 你必须命名你的文件 user.php 以便 Yii 可以成功加载它。
【讨论】:
以上是关于使用 Yii 框架进行 CAS 身份验证的主要内容,如果未能解决你的问题,请参考以下文章
使用 CAS 进行身份验证和 LDAP 进行授权的 Spring 项目
Shiro 和 CAS 如何使用不同的域进行身份验证和授权?