Сессии в Laravel

Laravel Session

Сессии Laravel играют важную роль в любом веб-приложении, они помогают нам сохранять данные сессий, которые можно извлечь в приложения.

В этой статье мы рассмотрим, как можно использовать хелперы сессий. Laravel Session предоставляют множество различных форматов для хранения данных, включая файлы, куки, базу данных, Redis и Memcached.

Что такое сессия?

Сессия — это простой способ хранения данных для каждого HTTP-запроса с уникальным идентификатором.

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

Поддерживаемые сессионные драйвера

Дефолтный драйвер для сессий — file. Он хорош для локальной разработки, но для продакшн-сервера, для повышения производительности, лучше использовать Redis или Memcached.

Вы можете изменить настройки драйвера в файла config/session.php.

/*
    |--------------------------------------------------------------------------
    | Дефолтный Драйвер Сессии
    |--------------------------------------------------------------------------
    |     
    | Данная опция управляет дефолтным «драйвером» сессий,
    | который будет использоваться при запросах. 
    | По умолчанию мы будем использовать легковесный нативный драйвер,
    | но вы можете указать любой, из указанных здесь, замечательных драйверов.
    |
    | Поддерживается: "file", "cookie", "database", "apc",
    |            "memcached", "redis", "dynamodb", "array"
    |
    */

    'driver' => env('SESSION_DRIVER', 'file'),

Использование Сессий Laravel для хранения данных

Во фреймворке Laravel есть два разных метода, которые можно использовать для задания переменных в сессии. Первый использует хедпер-функцию session().

// Глобальная хелпер-функция

session(['key' => 'value']);

Во-вторых, вы можете использовать экземпляр Request

// Экземпляр класса Request

$request->session()->put(['key' => 'value']);

Добавление значения в массив сессии

Метод push() экземпляра Request используется для добавления нового значения в массив сессии.

// Экземпляр класса Request

$request->session()->push(['key' => 'value']);

Получение данных сессии

Есть несколько цепочных методов, доступных для session().

Получение значения сессии по ключу

Аналогично сохранению значения сессии, существует два разных способа его получения.

Первый метод использует метод session()

// Глобальная хелпер-функция

$value = session('key');

Второй метод заключается в использовании экземпляра Request:

// Экземпляр класса Request

$value = $request->session()->get('key');

Получение всех значений сессии

Чтобы получить все значения сессии, используйте метод all() экземпляра Request, как показано ниже.

// Получить все значения сессии

$values = $request->session()->all();

Проверка наличия значения сессии

Метод has() можно использовать для определения, существует ли значение в сессии. Он вернет true если значение существует, и null если значение не существует.

// Проверка существования значения сессии

if ($request->session()->has('key') {
    //
}

Регенерация идентификаторов сессии

Если вы хотите перегенерировать все идентификаторы для сессии, то вы можете использовать метод regenerate().

// Перегенерация сессионных ID

$request->session()->regenerate();

Удаление значений сессии

Используйте метод forget() для удаления указанного значения по ключу из сессии.

// Удалить элемент из сессии

$request->session()->forget('key');

Чтобы удалить все элементы из сессии, можно использовать метод flush().

// Удаление всех значений из сессии

$request->session()->flush();

Выводы

Сессии очень важны для любого веб-приложения, почти все веб-фреймворки предоставляют этот функционал «из коробки». В этой статье мы постарались охватить все варианты использования Сессий Laravel.

Автор: Larashout
Перевод: Алексей Широков

Наш Телеграм-канал — следите за новостями о Laravel.