РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
520 of 1392 menu

Middleware EncryptCookies

Middleware EncryptCookies входит в стандартный набор промежуточного слоя Laravel и применяется к каждому запросу автоматически. Он шифрует все куки, передаваемые между клиентом и сервером, используя алгоритм, основанный на ключе приложения APP_KEY. Это предотвращает чтение или модификацию содержимого кук на стороне клиента.

Основная задача middleware - защита чувствительных данных, которые могут храниться в куках. По умолчанию шифруются все куки, включая куки сессии и CSRF-токена. В некоторых случаях может потребоваться исключить определённые куки из шифрования, например, для интеграции со сторонними сервисами, которые ожидают данные в открытом виде.

Синтаксис

Middleware настраивается в файле app/Http/Middleware/EncryptCookies.php. Для исключения кук из шифрования используется свойство except:

<?php namespace App\Http\Middleware; use Illuminate\Cookie\Middleware\EncryptCookies as Middleware; class EncryptCookies extends Middleware { protected $except = [ 'cookie_name', ]; } ?>

Пример использования

По умолчанию Laravel шифрует все куки. Рассмотрим стандартный файл middleware:

<?php namespace App\Http\Middleware; use Illuminate\Cookie\Middleware\EncryptCookies as Middleware; class EncryptCookies extends Middleware { protected $except = []; } ?>

Пример исключения куки из шифрования

Если требуется, чтобы определённая кука передавалась в открытом виде, добавьте её имя в массив except:

<?php namespace App\Http\Middleware; use Illuminate\Cookie\Middleware\EncryptCookies as Middleware; class EncryptCookies extends Middleware { protected $except = [ 'third_party_token', 'analytics_cookie', ]; } ?>

После добавления куки 'third_party_token' и 'analytics_cookie' в массив исключений, эти куки не будут шифроваться. Все остальные куки продолжат шифроваться автоматически.

Пример работы с зашифрованными куками в контроллере

При работе с куками в контроллере используется фасад Cookie. Зашифрованные куки автоматически дешифруются при получении:

<?php namespace App\Http\Controllers; use Illuminate\Support\Facades\Cookie; class CookieController extends Controller { public function setCookie() { Cookie::queue('user_name', 'john_doe', 60); return response('Cookie set'); } public function getCookie() { $name = Cookie::get('user_name'); return response("User name: " . $name); } } ?>

Результат получения куки:

"User name: john_doe"

Пример использования куки в маршруте

Можно установить куку прямо в определении маршрута через фасад Cookie или через метод ответа:

<?php use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Cookie; Route::get('/set-cookie', function () { Cookie::queue('theme', 'dark', 1440); return response('Theme cookie set'); }); Route::get('/get-cookie', function () { $theme = Cookie::get('theme', 'default'); return response("Current theme: " . $theme); }); ?>

Результат выполнения маршрута /get-cookie:

"Current theme: dark"

Смотрите также

  • Middleware ValidateCsrfToken,
    который проверяет CSRF-токен в запросах
  • Middleware SubstituteBindings,
    который подставляет модели в маршруты
  • Middleware TrimStrings,
    который обрезает пробелы из строк запроса
  • Фасад Cookie,
    который предоставляет методы для работы с куками
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить