1

認証データに夢中になっています。

私のアプリで誰かがログインすると、私のauthcontrollerはユーザーデータをZend_Authストレージに保存します

class AuthController extends Zend_Controller_Action
{ ...
   public function loginAction()
   { ...
      $userMapper = new Application_Model_UsersMapper();
      $user = $userMapper->fetchById($adapter->getResultRowObject()->id);
      $this->auth->getStorage()->write($user);
   }
}

この後、ユーザー許可($ userMapperによって返されるUserオブジェクトに格納されている)をAclシステムに追加するプラグインを作成しました。

問題は、Zend_Auth-> getInstance()-> getIdentity()を呼び出すと、オブジェクト全体ではなく、ユーザー名のみが見つかることです。

4

2 に答える 2

1

問題を解決しました!mysql の構成にエラーがありました。read() 関数は、ストレージに何も見つからず、ユーザー名を返しました。助けてくれてありがとう。

于 2013-03-17T11:11:03.663 に答える
0

これは、アイデンティティが実際にはユーザー名であるためです(あなたの場合)。オブジェクト全体を取得したい場合は、次のように取得できます。

$user = $this->auth->getStorage()->read();

もう 1 つ考慮すべきことは、Zend_Auth のデフォルトのストレージはセッションであるため、オブジェクトが db などの他のリソースにアタッチされている場合は、オブジェクトをシリアライズする必要があるかもしれないということです。

お役に立てれば :)

于 2013-03-16T22:24:16.023 に答える