Задать вопрос
@Nurvana_lite

Cookie::get() не расшифровывает куки как исправить?

написал простой метод создания корзины пользователя и храню id корзины в cookie.
проблема в том что $basket_id отдается в зашифрованном виде
$basket_id = Cookie::get('basket_id');

попробовал использовать Crypt::decryptString. но выдает ошибку The payload is invalid.
$decrypted = Crypt::decryptString($basket_id);

XSRF-TOKEN создает куки с отрицательным временем жизни. создан в 11:17 а кука показывает такую дату 2023-08-25T10:17:08.682Z

в config/app.php 'timezone' => 'Europe/Moscow',

private function getBasket() {
        $basket_id = Cookie::get('basket_id');
        $decrypted = Crypt::decryptString($basket_id);
        if (!empty($basket_id)) {
            try {
                $this->basket = Basket::findOrFail($basket_id);
            } catch (ModelNotFoundException $e) {
                $this->basket = Basket::create();
            }
        } else {
            $this->basket = Basket::create();
        }
        Cookie::queue('basket_id', $this->basket->id, 52560000);
    }
  • Вопрос задан
  • 201 просмотр
Подписаться 1 Простой 47 комментариев
Пригласить эксперта
Ответы на вопрос 1
@v__V__v
Разработчик
Если вы устанавливаете куки постановкой в очередь из посредника, то убедитесь, что ваш посредник находится в группе 'web' и идет после \App\Http\Middleware\EncryptCookies::class:
protected $middlewareGroups = [
        'web' => [
            \App\Http\Middleware\EncryptCookies::class,

            \App\Http\Middleware\Your_Middleware_With_Cookies_Must_Be_Here_Or_Below::class,

            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
            \App\Http\Middleware\CheckAuth::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы