fuelphpで用意されているメソッドの説明が曖昧すぎて自動ログインで悩んでいます。
自動ログインについて以下のような文献があります。
http://fuelphp.jp/docs/1.8/packages/auth/simpleauth/usage.html#/method_force_login
force_login($user_ids = '') force_login メソッドは強制的なログインリクエストを扱います。ユーザ id が手元にあり パスワードがわかっていないときに自動ログインさせるために利用できます。「ログイン状態を保持する」機能として利用できます。 静的 No パラメータ パラメータ 規定値 説明 $user_id 必須 ログインさせたいユーザの id 返り値 論理型。ログインに成功すれば true を、そうでなければ false を返す。
http://fuelphp.jp/docs/1.8/packages/auth/simpleauth/usage.html#/method_remember_me
remember_me メソッドは、 remember_me クッキーを設定することができます。 $user_id が指定されていない場合は、現在ログインしているユーザーが使用されます。 静的 はい パラメータ パラメータ デフォルト パラメータ $user_id null 記憶するユーザーの id 返り値 boolean。正しく remember me クッキーが設定されていれば true を、 user_id が存在しないか remember_me 機能が設定で無効になっている場合 false が返されます。 例 // ログインフォームの POST を処理し、必要に応じて remember-me クッキーを設定 if (\Input::method() == 'POST') { // 資格情報を検査 if (\Auth::instance()->login(\Input::param('username'), \Input::param('password'))) { // ユーザーを覚えてほしい? if (\Input::param('rememberme', false)) { // remember-me クッキーを作成 \Auth::remember_me(); } else { // 存在する場合、 remember-me クッキーを削除 \Auth::dont_remember_me(); } // ログインしホームページに移動 \Response::redirect('/'); } else { // ログイン失敗、エラーメッセージを表示 $data['username'] = \Input::param('username'); $data['login_error'] = \Lang::get('login.failure'); } }
多分使い方としてこういうことなのかと、、、時系列で説明します。
・ログイン成功したらAuth::remember_me()でcookieに保存して、ログインしたユーザーIDもcookieに保存。
・$_COOKIE['auto_login']と$_COOKIE['user_id']とする。
・ブラウザを閉じる。
・ブラウザ開いてサイトにアクセス。
・この時、システムは、Auth::remember_me()で保存されたはずのcookie($_COOKIE['auto_login'])があれば、ユーザーID($_COOKIE['user_id'])を使ってforce_login($user_ids = '')を実行する。
・結果的に自動的にログインできる。
ということだと思うのですが、これではかなり問題があるように思えます。
force_loginメソッドはパスワードが不明でもユーザーIDさえわかってればログインできる仕様なので、ユーザーID1の人がユーザーID5とかに書き換えたらログインできてしまうということになります。
fuelphpで自動ログインするには自作するしかないでしょうか。
私の認識がおかしいのか。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。