Laravel 9で設定されていないCookieを修正する方法を教えてください

受付中 プログラミング
2024-12-24
土左衛門
トークンにCookieを設定しようとしていますが、 httpOnlyCookieが保存されていません。 私はユーザーにログインしようとしています。 OTPユーザーが正しく入力しOTPたら、アプリにサインインします。これまでのところ、以下のようにログインしています。
        $user = User::where('mobile_number', $request->mobileNumber)->first();
        
        if ($user) {
            Auth::login($user);
        
            $token = $user->createToken('authToken')->accessToken;
        
            $cookie = cookie('token', $token, 60 * 24 * 24); // 24 day
        
            return response([
                'status' => 'success',
                'message' => 'loggedIn',
                'user' => auth()->user(),
            ])->withCookie($cookie);
        
        }else{
            return response()->json([
                'status' => 'success',
                'message' => 'notExist'
            ], 200);
        }
        
ユーザーは正常にログインします。ページを更新すると、再度ログインする必要があります。確認すると、Application\Storage\Cookies in Firefox and Storage\Cookies in chromeCookieが返される兆候はありません(ページを更新しなくても、Cookieはまったく保存されません)。 私はを使用していますが、これまでのところ、 Cookieはブラウザに保存されていないため、サイドにLaravel Passport関連する問題はないと思います。VUE また、すべてが機能するかどうかをテストするためにCookieを追加しようとしましたが、同じ問題が再び発生し、ブラウザに何も保存されませんでした。 他の解決策も試しましたStackoverflowが、うまくいきませんでした。
回答一覧
Cookieをキューに入れて、Illuminate\Cookie\Middleware\AddQueuedCookiesToResponseこのミドルウェアがKernal.phpで有効になっていることを確認してください
土左衛門
Queuingを試しましたが、機能しませんでした。またAddQueuedCookiesToResponse、デフォルトで有効になっています。
土左衛門
httpOnlyjavascriptでCookieにアクセスできないことをご存知ですか?何が起こっているのかわからないので、私は本当に質問に答えることができません。あなたは質問の中で「ページを更新する」と言っていますが、そこで何が起こっているのかについての説明はありません。
土左衛門
はい、私は知っています。ページ全体の更新状況を忘れてください。まったく保存されません。
土左衛門
Laravelが提供するCookieファサードを使用します。
        use Illuminate\Support\Facades\Cookie;
         
        Cookie::queue('token', $token, 60 * 24 * 24);
        
Kernel.phpで、コメントされている場合は検索しAddQueuedCookiesToResponseてコメントを外します。
土左衛門
Cookie::queueまたはを使用するかどうかは重要ではありませんresponse()->withCookie(...)
土左衛門
さて、私はそれを見つけました、問題はVUE実際には側面からだったようです。appURLはファイル127.0.0.1のデフォルト用でしたが、経由で呼び出していて、機能していましたが、この競合のためにCookieが保存されませんでした。でデフォルトとして変更すると、機能しました。envVUEAPILocalhost127.0.0.1baseURLaxios
土左衛門
$exceptにCookie名を追加します。 /app/Http/Middleware/EncryptCookies.php
土左衛門