我在与Laravel的一个会话中获得两个会话ID



我有一个名为CartController.php的控制器在这个控制器中,我有两种方法:

public function store(Request $request)
{
// we'll check to see if the order is already in db
$productOrderDetails = new AppCart;
$productOrderDetails->session_id = session()->getId();
$productOrderDetails->job_name = $request->jobName;
$productOrderDetails->pro_name = $request->productName;
$productOrderDetails->save();
return response()->json($request);
}
public function displayCart()
{
//dd($upsCost);
$currentSessionID = session()->getId();
$displayCart = Cart::where('session_id', $currentSessionID)->get();
dd($currentSessionID);
session(['inCartDetails' => $displayCart]);
return view('layouts.cart')->with('cartDetails', $displayCart);
}

store方法被一个fetch-api帖子击中。

export async function postProductDetails(details) {
const url = 'http://127.0.0.1:8000/api/cartDetails';
let response = await fetch(url, {
method: 'POST',
mode: 'cors',
credentials: 'same-origin',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(details)
})
if(response.ok) {
window.location.href = "/cart";
} else {
alert("HTTP-Error: " + response.status);
}
// return response.json();
}

我的问题是我得到了两个不同的会话ID。当方法存储通过fetch post命中时,我得到会话id:

HnSxCjSXflzyt4Uks3SGsEZcJEHleSR97N1RNA5l

然后,当我运行displayCart方法时,它会给我一个不同的会话id:

su8A6E3umTW1XmXf5Yhk3SHU5WUGCEpcJWXlnVIP

它可以从同一个浏览器访问,只需几分钟。知道为什么会发生这种事吗?

我不会依赖会话ID来进行逻辑,但您可以创建一个Cart并将Cart ID保存到会话中,然后检索它:

public function store(Request $request)
{
$productOrderDetails = new AppCart;
$productOrderDetails->job_name = $request->jobName;
$productOrderDetails->pro_name = $request->productName;
$productOrderDetails->save();
session(['cart_id' => $productOrderDetails->id]);
return response()->json($request);
}
public function displayCart()
{
$displayCart = session('cart_id') ? Cart::find(session('cart_id')) : null;
return view('layouts.cart')->with('cartDetails', $displayCart);
}

最新更新