任意のパラメータでログイン関数を実行
CakePHP v2.4.6
cake のログイン関数は $this->request->data[認証に使用するモデル名]
以下に
ユーザー名とパスワードが格納されていることを前提として機能する。
はじめこの関数はユーザー情報の引数を取るため、View でパラメータ名が
ログイン関数が期待するパラメータ名(デフォルトでは username, password)
と違っても引数でこれらを渡してやればログイン処理ができると思った。
想定外
しかし上手くいかない。 処理内容が思っていたのと違ったのだ。
http://stackoverflow.com/questions/14897626/cake-php-auth-login
引数で渡した情報でログインするのではなく、引数を渡して呼ぶと現在ログイン中の
ユーザーの情報を書き換えるというものだった。
上のページを参考にするとログインが成功した時は上手く行ったが・・・
自分は今、twitter のような、ログインフォームとアカウント作成フォームが
混在するページを作成していた。 ログイン用のパラメータ名を
プレフィックス付きの物にし、アカウント作成用のパラメータ名を
自然な名前(password など)にしていた。 そのため、ログインに失敗すると アカウント作成用のフィールドにログインに使用したメールアドレスとパスワードが
入ってしまった。
これは上の記事で提示されている方法でログイン失敗時には空文字を設定してやれば
回避できるのだが・・・。
今更だけど
こんな処理せずにログイン用のフィールドのパラメータ名を
ログイン関数が期待するものにし、新規アカウント作成用のフィールドの
パラメータ名を別にしてやれば良いと思った。