私はCakePHPから始めています。私はemail
代わりにusersテーブルロギングを作成しましたusername
...問題は、ユーザーごとに1つではなく多くの電子メールを持たないため、Facebookのように任意の電子メールを使用して同じアカウントにログインできることです。します。
私の質問ですが、CakePHPで動的に複数の属性を作成できない場合(前の質問を参照)、これを行うための最良の方法は何ですか?
私はCakePHPから始めています。私はemail
代わりにusersテーブルロギングを作成しましたusername
...問題は、ユーザーごとに1つではなく多くの電子メールを持たないため、Facebookのように任意の電子メールを使用して同じアカウントにログインできることです。します。
私の質問ですが、CakePHPで動的に複数の属性を作成できない場合(前の質問を参照)、これを行うための最良の方法は何ですか?
ユーザーごとに複数のメールを保存するには、おそらく@Petarが回答したことを実行する必要があります。
ユーザーを認証するには、カスタム認証オブジェクトを作成する必要があります。このオブジェクトでは、クエリを実行し、電子メールパスワードが正しい場合にtrueを返すauthenticate()メソッドを作成する必要があります。
AppControllerでこの新しい認証オブジェクトを設定することを忘れないでください。次のようになります。
AppController.php
// Pass settings in $components array
public $components = array(
'Auth' => array(
'authenticate' => array(
'MultipleEmails'
)
)
);
Component / Auth / MultipleEmailsAuthenticate.php
class MultipleEmailsAuthenticate extends BaseAuthenticate {
public function authenticate(CakeRequest $request, CakeResponse $response) {
//make your query here and return true or false
}
BaseAuthenticateクラスの記述方法の例が必要な場合は、ソースファイルBaseAuthenticateおよびFormAuthenticateを読み取ることができます。
お役に立てれば
私のアドバイスは、データベースに 2 つのテーブルをセットアップすることです。
USERS テーブルには、ユーザーについて必要なものをすべて格納します。
次に、外部キーを使用して USERS テーブルを参照するように USER_EMAILS テーブルをセットアップします。
重複を防ぐために、「メール」を一意のインデックスにします。
これで、USER_EMAILS テーブルで電子メール アドレスを検索するたびに (ログイン時など)、作業対象の USER への参照が取得されます。
それは理にかなっていますか?