前提・実現したいこと
LaravelのCookieを使った自動ログイン、ログアウト機能
発生している問題
phpの書き方でcookieを使用すると問題ないのですが
ファサードを使うと'auto_login'クッキーとLoginTokenテーブルの値が一致しません。
またログアウト時のクッキー削除も出来ません。
正しいcookieファサードの書き方を教えて頂けませんでしょうか。
該当のソースコード
※ファサード処理はコメントアウトしています
LoginController.php // ----- ログインメソッド一部抜粋↓ ----- // 入力項目を保存するにチェックが入っている if($request->remember) { // クッキー名 $cookie_name = 'auto_login'; // ランダム文字列生成 $cookie_value = sha1(uniqid(rand(), true)); // 有効期限 $cookie_dead_line = time() + (60 * 60 * 24 * 3); // クッキー設定 setcookie($cookie_name, $cookie_value, $cookie_dead_line); /* ファサードを使った書き方 // 有効期限 $cookie_dead_line = 60 * 24 * 3; Cookie::queue(Cookie::make('auto_login', $cookie_value, $cookie_dead_line)); */ // クッキー値との比較に使用する $loginToken = new LoginToken(); $loginToken->user_id = $user->id; $loginToken->login_token = $cookie_value; $loginToken->save(); } // ----------------------------------- // ログアウト public function logout(Request $request) { // ログイントークン削除 $user_id = $request->session()->get('user')->id; $loginToken = LoginToken::findOrFail($user_id); $loginToken->delete(); // クッキー削除 if (isset($_COOKIE["auto_login"])) { setcookie("auto_login", "", time() - 1800, '/'); } /* ファサードを使った書き方 // クッキー削除 if (Cookie::get('auto_login')) { Cookie::forget('auto_login'); } */ // セッション全削除 $request->session()->flush(); // セッションをクリア&セッションIDを再発行 session()->invalidate(); // リダイレクト return redirect('/'); }
試したこと
Cookie::makeのみで記述されているサイトもありましたので
cookieの作成を下記のように変更したりしましたがこちらだとクッキー自体が作られませんでした。
Cookie::make('auto_login', $cookie_value, $cookie_dead_line);
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。