1

機能に問題がありZend_Authます。

Zend_Authセッションのキーがタイムアウトしたときに、ユーザーにログイン ボックスを表示する Web アプリがあります。ユーザーが正しい認証情報でログインすると、セッションのキーは true にリセットされます。ただし、ユーザーが間違った資格情報を入力すると、セッション内のすべてのキーが消去され、セッションはより長く有効になりますか?

Zend_Auth::getInstance()関数がそれを拭いて新たに開始するかどうか疑問に思っていますか?

何か案は?

protected function _process($values)
{
  // grab data from config
  $iniTime = Zend_Registry::get('config')->inactive->session;
  $expireTime = $iniTime->timeout;
  $realIP = new Application_Model_RealIP();
  // Get our authentication adapter and check credentials
  $adapter = $this->_getAuthAdapter();
  $adapter->setIdentity($values['email']);
  //$pwEncode->encode_password($values['password'])
  $adapter->setCredential($values['password']);
  $auth = Zend_Auth::getInstance();
  $result = $auth->authenticate($adapter);
    if ($result->isValid()) {
        $user = $adapter->getResultRowObject();
        $user->session_IP = $realIP->getRealIpAddr();
        $auth->getStorage()->write($user);
        //check whether the client is authenticated
        $session = new Zend_Session_Namespace('new_session');
        // Set "dummy" key with expiration
        $session->key = true;
        $session->setExpirationSeconds( $expireTime, 'key' );
        return true;
     }
   return false;
}

_process メソッドを呼び出す認証関数へのリンク リンク

4

1 に答える 1

0

私が言えることから、_forward()(リクエストを保持する)または_redirect()新しいリクエスト)をログインに戻す必要があります。これは、の60行目から100行目までの失敗authenticate()の結果です。_process()authAction()

私が読んでいることから、失敗したログインがログに記録され、データベースが更新されているように見えますが、その後は...何もありません。リダイレクトも転送もありません。ヘッダーが500に設定され、メッセージが生成されます。

お役に立てれば。私はそれを完全に見逃していなかったと思います。

于 2012-09-13T11:22:09.640 に答える