下面給大家介紹一個(gè)Laravel刪除Cookie的小坑,希望對(duì)需要的朋友有所幫助!
問(wèn)題:使用 Cookie::forget 未能正確刪除 cookie。
如何才能正確刪除 Laravel 應(yīng)用的 Cookie?
其實(shí)這里有一個(gè)小坑:我們?cè)趧h除 Laravel Cookie 的時(shí)候,一定要注意返回 Cookie 的刪除結(jié)果!
$cookie = Cookie::forget('refreshToken');// 這里我們返回的時(shí)候要使用 withCookie !return response('view')->withCookie($cookie);
以上解決方案適合在刪除 Cookie 后返回視圖的應(yīng)用場(chǎng)景中。
然而,如果我們的請(qǐng)求是 API 請(qǐng)求,并且返回的是 JSON 數(shù)據(jù)呢,比如:
Cookie::forget('refreshToken');return ['status' => true];
這個(gè)時(shí)候我們?cè)趺磩h除 Cookie ?這種1情況下即使我們使用 withCookie 也是沒用的!
所以針對(duì)這樣的應(yīng)用場(chǎng)景,最終的解決方案是這樣的:
Cookie::queue(Cookie::forget('refreshToken'));return ['status' => true];
使用 Cookie::queue 來(lái)達(dá)到目的。
這樣就能正確刪除 Laravel Cookie 的值了。