За последние 24 часа нас посетили 22792 программиста и 1262 робота. Сейчас ищут 777 программистов ...

Кука от клиента прилетает в зашифрованном виде

Тема в разделе "Laravel", создана пользователем Alexandrinho, 24 окт 2020.

  1. Alexandrinho

    Alexandrinho Новичок

    С нами с:
    5 дек 2019
    Сообщения:
    24
    Симпатии:
    0
    Здравствуйте!

    Пишу корзину товаров, $cart_id хранится в куке у клиента и при запросе прилетает в зашифрованном виде

    Контроллер:
    Код (Text):
    1. class CartController extends Controller
    2. {
    3.     private $cart;
    4.  
    5.     public function __construct()
    6.     {
    7.         $this->cart = Cart::getCart();
    8.     }
    9.  
    10.     public function showCart()
    11.     {
    12.         $products = $this->cart->products;
    13.        
    14.         return view('cart.cart', [
    15.             'products' => $products
    16.         ]);
    17.     }
    18.  
    19.     public function addToCart(AddToCartRequest $request, $id)
    20.     {
    21.         $quantity = $request->input('quantity') ?? 1;
    22.  
    23.         $this->cart->increase($id, $quantity);
    24.  
    25.         return back();
    26.     }
    27.  
    28.     public function plus($id)
    29.     {
    30.         $this->cart->increase($id);
    31.         return redirect()->route('showAdminCart');
    32.     }
    33.  
    34.     public function minus($id)
    35.     {
    36.         $this->cart->decrease($id);
    37.         return redirect()->route('showAdminCart');
    38.     }
    39.  
    40. }
    Метод модели, отвечающий за получение объекта корзины:
    Код (Text):
    1. public static function getCart()
    2.     {
    3.         $cart_id = Cookie::get('cart_id');
    4.         //dd($cart_id);
    5.  
    6.         if (!empty($cart_id)) {
    7.             try {
    8.                 $cart = Cart::findOrFail($cart_id);
    9.             } catch (ModelNotFoundException $e) {
    10.                 $cart = Cart::create();
    11.             }
    12.         } else {
    13.             $cart = Cart::create();
    14.         }
    15.  
    16.         Cookie::queue('cart_id', $cart->id, 525600);
    17.  
    18.         return $cart;
    19.     }
    То есть, при запросе куки в методе модели getCart(), кука приходит без дешифрования, причем это началось после того, как я перенес часть логики в модель, когда вся она находилась в контроллере, все дешифровалось как надо...
    Помогите, пожалуйста, разобраться, что не так.
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.823
    Симпатии:
    736
    Адрес:
    Татарстан
    Зачем в куках? Чего не в локалсторадже?

    Непонятно ничего про шифрацию дешифрацию... С чего вы это взяли? По коду ничего не видно
     
  3. Alexandrinho

    Alexandrinho Новичок

    С нами с:
    5 дек 2019
    Сообщения:
    24
    Симпатии:
    0
    При любом запросе к корзине проверяется наличие cart_id в куке, если ее нет - создается новая. При записи куки Ларавел шифрует ее и хранит в зашифрованном виде, а при получении обратно дешифрует (это все из доки https://laravel.com/docs/8.x/requests#cookies). Соответственно в моем случае при получении куки дешифрования по какой-то причине не происходит и cart_id, который должен быть integer, выглядит примерно так:
    eyJpdiI6IktVMGhpcE4xZGtUQWVOeTdvT25FdUE9PSIsInZhbHVlIjoic2hqTzZleWsySjdaQlhmcDBhWDBUekpmRzU0U2M5V0FZM2RST3JjemhuTUlYOW1RdWR5OEpMSHMzSEJxNG5CKyIsIm1hYyI6ImE3NmJm.
    Вот и возникает вопрос, почему так происходит?
     
  4. Alexandrinho

    Alexandrinho Новичок

    С нами с:
    5 дек 2019
    Сообщения:
    24
    Симпатии:
    0
    Неужели никто не подскажет, куда копать хотя бы?