Web サイトでの認証には、Zend_Auth_Adapter_DbTable を使用します。すべて問題なく動作しますが、Zend Framework はテーブル内で一意の ID のみを許可します。
アイデンティティとして、ユーザーからのメールアドレスを使用します。問題は、テーブルにこのメールアドレスを持つアイテムが他にもあることです。ユーザーはそこのアカウントを削除できるので、行全体を削除するのではなく、ステータスを -2 などに変更するだけです。アクティブ ユーザーのステータスは 1 です。
私はそれを次のように使用しようとします:
$authAdapter = new Zend_Auth_Adapter_DbTable($db, 'user', 'email', 'password', "? AND `status`='1'");
$authAdapter->setIdentity($email);
$authAdapter->setCredential($password);
しかし、うまくいきません。同じメールアドレスを持つ非アクティブなユーザーを削除すると、すべてが機能します。何故ですか?