簡體   English   中英

為什么Laravel的Cookie為空-5.7

[英]Why cookie of laravel is null - 5.7

我的Cookie為空! 但是我不知道:

use Illuminate\Support\Facades\Cookie;

HomeController的:

public function index()
{
    Cookie::queue('currentLang', 'heb', 999999999);



      $cat1         = $this->categoryRepo->findCategoryById(1);
      $lastPosts    = $this->blogPosts->listBlogPosts(array('*'),'id','desc')->take(3);

    return view('front.index', compact('cat1','lastPosts'));
}

現在我想從另一個控制器獲取此密鑰:

的LoginController:

public function showLoginForm()
{
    dd(Cookie::get('currentLang'));
    return view('auth.login');
}

但它返回null! 我正在使用localhost。

根據文檔, Cookie::queue(...用於將Cookie附加到您的響應(一種替代方法)上。如果您檢查響應標頭,則應注意Set-Cookie: currentLang=someencryptedvalue確實存在。

我創建了一些原型端點來說明如何創建和刪除cookie:

use Illuminate\Support\Facades\Cookie;

Route::get('/wont-clear-cookie', function() {
    Cookie::forget('currentLang');

    return redirect()->to('/get-cookie');
});

Route::get('/clear-cookie', function() {
    Cookie::queue(Cookie::forget('currentLang'));

    return redirect()->to('/get-cookie');
});

Route::get('/set-cookie', function() {
    Cookie::queue('currentLang', 'heb', 999999999);

    return redirect()->to('/get-cookie');
});

Route::get('/get-cookie', function() {
    dump(Cookie::get('currentLang'));
    dd(request()->cookie('currentLang'));
});

以上端點應放置在web.php

另外,請確保在App\\Http\\Kernal.php正確配置了web中間件組:

'web' => [
    \App\Http\Middleware\EncryptCookies::class,
    \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
    \Illuminate\Session\Middleware\StartSession::class,
    // \Illuminate\Session\Middleware\AuthenticateSession::class,
    \Illuminate\View\Middleware\ShareErrorsFromSession::class,
    \App\Http\Middleware\VerifyCsrfToken::class,
    \Illuminate\Routing\Middleware\SubstituteBindings::class,
],

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM