.





2005/08/20
Ethna+PEAR::Authその2
カテゴリ : Ethnaメモ
執筆者: itoh (4:40 pm)
前回のエントリで書いた内容は全然よろしく無かったです。

[wiki]** Ethna_ActionClassにauthenticateメソッドがありました。[/wiki]
順番としては、authenticate > prepare > performって処理してくれるので、authenticateを作ったActionClassを作っておいて、認証が必要なActionClassはそのクラスを継承させることにします。

なので、app/action/Login/Auth.phpでPEAR::Authを使ったauthenticate処理を
<?
	function authenticate()
	{
		if( ! $this->session->isStart() ){
			$this->session->start(0) ; }
		$mailaddress = ! is_null($this->af->get('mailaddress')) ? 
                                         $this->af->get('mailaddress') : '' ;
		$password = ! is_null($this->af->get('password')) ?
                                         $this->af->get('password') : '' ;
		$Config =& $this->backend->getConfig() ;
		$params = $Config->get('auth_params') ;

		require_once 'Auth/Auth.php' ;
		$loginauth =& new Auth("MDB", $params, '', false );
		$loginauth->setExpire(2400, true) ;
		if( ! $loginauth->checkAuth() ){
			$_POST['username']=(!empty($mailaddress))?$mailaddress:'' ;
			$_POST['password']=(!empty($password)) ? $password : '' ;
			$loginauth->start() ;
			if( $loginauth->checkAuth() ){
				return null ;
			}
		}else{
			return null ;
		}
		return 'login';
	}
?>

とかしておいて、認証アクションでは
<?
require_once "action/Login/Auth.php" ;
class Kcaffiliate_Action_LoginMenu extends Kcaffiliate_Action_LoginAuth
?>

としてやればオッケーです。

ハマったが、セッションの扱い。Ethna_Sessionというセッションのラッパークラスがバックエンドが動いているように見えるけど、Ethna_Session::start()をさせないとあくまでバーチャル的に動作するみたいだ。保存されずに、1リクエスト毎のセッション(それってセッションじゃないじゃん)となって結構「??」となった。勝手にセッションをスタートさせてるのかなーとか思ってた(そんなダサイ仕様にするわけがないんだけどさ。よく考えなくても)ので、ハマりました。
itohさんのブログを読む | コメント (12) | トラックバック数 (0) | 閲覧数 (10626)


 





メインメニュー

カテゴリ一覧

Google Adsense

うぇブログ カレンダー


XoopsCube Ring
Amethyst Blue - BULLETIN


.