CakePHPの認証コンポーネントを使用して、ユーザー名として「username」または「email」フィールドを使用し、パスワードとして「pass」フィールドを使用して認証する方法を教えてください。CakePHPの認証コンポーネントで電子メールの代わりにユーザー名を使用する
3
A
答えて
4
「ユーザー名とメールアドレスの両方をユーザー名として使用する」とはどういう意味ですか?
編集:OK、Authはユーザの入力する「ユーザ名」と比較するためにdbのユーザ名と電子メールフィールドの両方を検索しますか?あなたはAUTHSのautoredirectをスキップして、それを自分で管理する必要がこれを行うには
function beforeFilter() { parent::beforeFilter(); $this->Auth->fields = array('username' => 'username', 'password' => 'pass'); $this->Auth->autoRedirect = false; } function login(){ if ($this->Auth->user()) { $this->redirect($this->Auth->redirect()); } else if (!empty($this->data)) { $this->Auth->fields = array('username' => 'email', 'password' => 'pass'); $this->data['User']['email'] = $this->data['User']['username']; if($this->Auth->login($this->data))$this->redirect($this->Auth->redirect()); } }
3
:その後、これを行います。あなたのusers_controllerこのログインアクション:これは私のアプリから直接コピーされたので、あなたのための微調整のビットを必要とする場合があり
public function login() {
if(!empty($this->data)) { // Submitted form
// Try to login with Email
if(!$this->Auth->user() // if user wasn't logged in with username + pass
&& !empty($this->Auth->data['User']['username'])
&& !empty($this->Auth->data['User']['password'])
) {
$user = $this->User->find('first', array(
'conditions' => array(
'User.email' => $this->Auth->data['User']['username'],
'User.password' => $this->Auth->data['User']['password']
),
'recursive' => -1
));
if(!empty($user) && $this->Auth->login($user)) {
// They logged in, so kill the flash error message
$this->Session->delete('Message.auth');
} else {
$this->Session->setFlash($this->Auth->loginError, $this->Auth->flashElement, array(), 'auth');
}
}
if($this->Auth->user()) {
// Post login logic here
$this->redirect($this->Auth->redirect());
}
} else {
if($this->Auth->user()) {
$this->Session->setFlash(__d('users', 'You are already registered and logged in!', true));
//$this->redirect('/');
$this->redirect($this->Auth->redirect());
}
}
。あなたのAppControllerに$this->Auth->autoRedirect = false;
を設定することを忘れないでください:beforeFilter();
Authはユーザー名とパスワードを自動的にチェックするので、このアクションはそのことを覚えておく必要があります。 Session::remove()
コールは、ユーザー名/パスワードのチェックに失敗したときにAuthエラーメッセージを自動的に削除することです。そうでなければ、成功したログインでエラーメッセージが表示されます。
+1
thaks助けをたくさん –
関連する問題
- 1. symfony2の認証/ユーザ名の代わりに電子メールを使用したログイン
- 2. ASP.NETフォーム認証でユーザー名の代わりに電子メールアドレスを使用
- 3. ユーザを認証するためにユーザ名の代わりに電子メール/電話を使用
- 4. Plone:ユーザー名の代わりに電子メールでパスワードを回復する
- 5. UserNameの代わりに電子メールを使用するPasswordRecovery
- 6. CakePHPの2.0認証私の見解では代わりに、ユーザー名
- 7. Django-ユーザー名の代わりに電子メールで組み込みのログインビューを使用するには?
- 8. Laravel 5.3で電子メールの代わりにログインするためのユーザー名の使用方法は?
- 9. 電子メールではなくユーザー名の認証
- 10. ASP.NET MVC 5で電子メールの代わりにユーザー名を使用して登録しますか?
- 11. メールはユーザーに属します - ユーザー名として電子メールを使用するCakephp 2.0.5
- 12. firebase電子メール認証ユーザーをpythonで削除するには?
- 13. 電子メール画像の代わりにファイル名を示す署名画像
- 14. passport.jsのユーザー名ではなく電子メールで認証する方法は?
- 15. ユーザーの詳細の確認ページの更新 - ユーザー名/電子メールのリモート検証
- 16. Rubyでの電子メール認証と認証によるユーザー登録
- 17. Laravelで電子メールなしでユーザーを認証する
- 18. Office365認証:アクセストークンからユーザーの電子メールを取得する
- 19. フォーム認証を使用してMVCで新しいユーザーの電子メール認証を実装する方法
- 20. SMSから電子メールへの電子メールアドレスの代わりに電話番号
- 21. WebServiceの代わりに電子メールでDocusignドキュメントを送信
- 22. Python電子メールでbccの代わりにccを送信
- 23. AngularFire電子メール認証エラー
- 24. cakephp認証コンポーネント:ユーザー名の変更フィールドが機能しない
- 25. iOS - Firebase認証/電子メールでのログイン
- 26. ERPNextでの電子メール認証
- 27. DRUPAL電子メールドメインベースの電子メールの代わりに送信者名を作成しますか?
- 28. 電子メールにフォームを送信した後、代わりに2つの電子メールを取得する1
- 29. 電子メールによるFirebaseデータベース認証
- 30. ドメインチェックによるAngularJS電子メール認証
私は、ユーザ名または電子メールのどちらかを有効なフィールドとして使用してログインすると思っています – Stoosh
電子メールアドレスまたはユーザ名のいずれかをフォームのユーザ名フィールドとして使用できます。 –
上記のコードは機能しません。 –