Я получаю два идентификатора сессии за одну сессию с Laravel - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть контроллер с именем CartController.php В этом контроллере у меня есть два метода:

  public function store(Request $request)
  {
        // we'll check to see if the order is already in db
          $productOrderDetails = new \App\Cart;
          $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);
  }

В методе хранилища используется сообщение API fetch.

 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();
}

Моя проблема в том, что я получаю два разных идентификатора сессии При обращении к хранилищу методов через сообщение выборки я получаю идентификатор сеанса:

HnSxCjSXflzyt4Uks3SGsEZcJEHleSR97N1RNA5l

Затем, когда я запускаю метод displayCart, он дает мне другой идентификатор сеанса:

su8A6E3umTW1XmXf5Yhk3SHU5WUGCEpcJWXlnVIP

Это доступ через тот же браузер, через пару минут. Есть идеи, почему это происходит?

1 Ответ

0 голосов
/ 23 апреля 2020

Я бы не стал полагаться на идентификатор сеанса для вашей логики c. Однако вы можете создать корзину и сохранить идентификатор корзины в сеансе, а затем получить его:

    public function store(Request $request)
    {
        $productOrderDetails = new \App\Cart;
        $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);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...