「データベーステーブル認証」で Zend_Auth を使用しています。私がしたいのは、ユーザーが「identityColumn」としてユーザー名または電子メールアドレスを使用してログインできるようにすることです。どうすれば両方を許可できますか。私は立ち往生しています。
3 に答える
3
独自の認証アダプタを拡張して実装し、「WHERE username = ? or email = ?」のようなクエリを使用します。認証結果を取得するには:)
于 2009-09-06T19:03:33.017 に答える
0
これが最もクリーンな Zend_Auth 実装ではないことはわかっていますが、機能します。唯一の問題は、誰かが別のメール アドレスをユーザー名として登録した場合に発生しますが、もちろん、登録フォームでこれを防ぐことができます。それが役に立てば幸い。
// if the entered value validates as an email address then use the 'email' field
// if not, use the 'username' field
$validator = new Zend_Validate_EmailAddress();
if ($validator->isValid($form->getValue('password'))) {
$identityField = 'email';
} else {
$identityField = 'username';
}
$authAdapter = new Zend_Auth_Adapter_DbTable(
$dbAdapter,
'users',
$identityField,
'password',
'SHA1(?)'
);
$authAdapter->setIdentity($form->getValue('username'))
->setCredential($form->getValue('password'));
于 2011-09-30T19:36:50.477 に答える