CakePHPでユーザIDもしくはメールアドレスのどちらでもログインできるようにする方法

DSC00181

2013年12月25日(水)

またまたCakePHPです。

CakePHPのAuth認証処理でログインID以外でもログインしたい場合が多くあると思います。その際に一番多いと思われるものが、メールアドレスですよね。そのメールアドレスとログインIDの2種類でログインを可能にする実装方法を教えます。

 

おそらくもっと良い方法があるかもしれませんが、これが簡単に実装できるのではないかと思います。

結構メールアドレスに限定した方法かもしれませんが、多数派だと思うので覚えておこう。そう、できないことはないんだ。

 

これがやり方だ!!

もうコントローラーの認証部分に以下のコードをぶち込んでしまえ。それですべては終わる。

例)

/app/Controller/UserController.php

login処理部分にメールアドレスを判断するロジックを追加し、メールアドレスの場合はAuthで参照するカラムをemailに変更するんだね。

// ユーザー名に「@」を使用できないという前提でusernameに「@」を含んでいる場合はemail認証
if ( strstr( $this->request->data['User']['username'], '@' ) ) {
	$this->request->data['User']['email'] = $this->request->data['User']['username'];
	$this->Auth->authenticate['Form']['fields']['username'] = 'email';
}<br /><br />if($this->Auth->login()) {
	return $this->redirect($this->Auth->redirect());
} else {
	$this->Session->setFlash(__('Username or password is incorrect'), 'default', array(), 'auth');
}


 

 

どうだろー?できるよね?

俺はできた。そう、エンジニアならできないことはほぼないんだ。色々な方法で試そう。そう、試したり新しい方法を考える事ができるのもエンジニアの特権だ。出来ない、じゃない。どうすればできるのかだ。

 

スポンサードリンク

運営サービスPR

スポンサードリンク

運営サービスPR