1

CASフレームワークで認証を実装しようとすると、いくつかの問題に直面していYiiます。クライアント クラスをダウンロードしましたが、フレームワークを使用していないときはすべてが機能していますが、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 警告

include(CAS_Client.php) [function.include]: 開けませんでした >stream: そのようなファイルまたはディレクトリはありません

C:\app\vertrigo\Vertrigophp52\www\testyii\framework\YiiBase.php(427)

私は何か不足していますか?物事を機能させるにはどうすればよいですか?

4

1 に答える 1

0

最後に、私はそれを機能させました.2、3の間違いを犯したことがわかりました。

まず第一に、require ステートメントを使用するべきではありませんでした。この理由は、以下に示すように、Yii が既に import メソッドを介してクラスをロードする処理を行っているためです。

Yii::import('application.vendor.CAS.*')

このインポートで2番目にタイプミスがありました。

/* This is wrong */
Yii::import('application.vendors.CAS.*') 

それ以外の

/* This is correct */
Yii::import('application.vendor.CAS.*') 

そのため、Yii は存在しない vendors ディレクトリを探していました。

最後に、インポート メソッドを正常に使用するには、クラスを含むファイルが同じ名前である必要があります。そのため、クラス名が user の場合、Yii が正常にロードできるように、ファイルに user.php という名前を付ける必要があります。

于 2013-11-04T12:42:55.070 に答える