0


0

私はクラスR00_Model_Userを持っています。これは、奇妙なことに、彼をそのままユーザーを表します。 $ result→ getIdentity()は私にこのクラスのオブジェクトを返すことができますか? (多分それはばかげた?)

(R00_Model_Userには、オブジェクトの重複を防ぐファクトリメソッドがあります。 可能であれば、新しいオブジェクトを作成する代わりにZend_Authで使用したいのですが)

2 Answer


2


2つの選択肢

  • あなたのシナリオに最も合う、すぐに使えるアダプタをサブクラス化するあなた自身の認証アダプタを書く

R00_Auth_AdapterクラスはZend_Auth_Adapter_ *を拡張します* {/ **
     *  authenticate() -  Zend_Auth_Adapter_Interfaceで定義されています。 このメソッドは
     *  認証を試みます。 この呼び出しの前は、このアダプターはすでに
     *  データベースに正常に接続するために必要なすべての情報で構成されている
     *  テーブルを検索し、指定されたIDと一致するレコードを見つけようとします *
     *  認証クエリに答えることが不可能な場合は@throws Zend_Auth_Adapter_Exception
     *  @return Zend_Auth_Result * /パブリック関数authenticate(){$ result = parent :: authenticate(); if($ result-> isValid(){return new Zend_Auth_Result($ result-> getCode()、R00_Model_User :: load($ result-> getIdentity());} else {return $結果;}}}

これはあなたがコーディングすることを可能にします

$ adapter = new R00_Auth_Adapter();
//... adapter initialisation (username, password, etc.)
$ result = Zend_Auth :: getInstance() - >認証($ adapter);

そして認証が成功すると、あなたのユーザオブジェクトは自動的に認証ストレージに保存されます(デフォルトではセッション)。 * またはあなたのログインアクションを使って保存されているユーザーIDを更新する

$ adapter = new Zend_Auth_Adapter _ *(); $ result = $ adapter-> authenticate(); if($ result-> isValid()){$ユーザー= R00_Model_User :: load($ result-> getIdentity()) Zend_Auth :: getInstance() - > getStorage() - > write($ user); }


0


私のアプリケーションの1つでは、getIdentity()がユーザーオブジェクトを返すようにしました。これは私にとっては非常にうまく機能します。 ファクトリメソッドを使うには、次のようにします。

$ auth = Zend_Auth :: getInstance(); $ user = R00_Model_User :: getInstance(...); $ auth-> getStorage() - > write($ user);

それからgetIdentity()を呼び出すと、ユーザーオブジェクトができます。