товары

Что такое сессии в Laravel, настройка и использование с примерами

Сеансы Laravel позволяют хранить информацию и обмениваться ею между запросами в вашем веб-приложении. 

Это простой способ сохранить данные для текущего пользователя. Этот туториал познакомит вас с основами работы с сессиями в Laravel.

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

В Laravel сеанс — это способ хранения информации для правильной обработки запросов, сделанных пользователем. Когда пользователь запускает приложение Laravel, для этого пользователя автоматически запускается сеанс. Данные сеанса хранятся на сервере, а небольшой файл cookie с уникальным идентификатором отправляется в браузер пользователя для идентификации сеанса.

Вы можете использовать сеанс для хранения данных, которые вы хотите использовать на нескольких страницах или запросах. Например, вы можете использовать сеанс для аутентификации пользователя или хранить другую информацию, которую вы хотите использовать во время сеанса в своем приложении.

Конфигурация сеанса в Laravel

Чтобы использовать сессии в Laravel, вы должны сначала включить их в файле config/session.php конфигурации. В этом файле можно установить параметры конфигурации, относящиеся к сеансам. Например, продолжительность сеанса, драйвер для хранения данных сеанса и место хранения данных сеанса. 

Файл имеет следующие параметры конфигурации:
  • водитель: указывает драйвер перед сеансомdefiготов использовать. Laravel поддерживает несколько драйверов сеансов: файл, файл cookie, базу данных, apc, memcached, redis, dynamodb и массив;
  • продолжительность жизни: указывает количество минут, в течение которых сеанс должен считаться действительным;
  • expire_on_close: если установлено значение true, сеанс истечет, когда браузер пользователя будет закрыт;
  • шифровать: true означает, что фреймворк будет шифровать данные сеанса перед их сохранением;
  • файлов: Если используется драйвер файлового сеанса, этот параметр указывает место хранения файла;
  • связи: если используется драйвер сеанса базы данных, этот параметр указывает используемое соединение с базой данных;
  • ТАБЛИЦЫ: Если используется драйвер сеанса базы данных, этот параметр указывает таблицу базы данных, используемую для хранения данных сеанса;
  • лотерея: массив значений, используемый для случайного выбора значения cookie идентификатора сеанса;
  • печенье: этот параметр указывает имя файла cookie, который будет использоваться для хранения идентификатора сеанса. Параметры path, domain, secure, http_only и same_site используются для настройки параметров cookie для сеанса.

Ниже приведен пример файла sessions.php при продолжительности сеанса 120 секунд, использование файлов, хранящихся в каталоге framework/sessions:

<?php

use Illuminate\Support\Str;

return [
    'driver' => env('SESSION_DRIVER', 'file'),
    'lifetime' => env('SESSION_LIFETIME', 120),
    'expire_on_close' => false,
    'encrypt' => false,
    'files' => storage_path('framework/sessions'),
    'connection' => env('SESSION_CONNECTION', null),
    'table' => 'sessions',
    'store' => env('SESSION_STORE', null),
    'lottery' => [2, 100],
    'cookie' => env(
        'SESSION_COOKIE',
        Str::slug(env('APP_NAME', 'laravel'), '_').'_session'
    ),
    'path' => '/',
    'domain' => env('SESSION_DOMAIN', null),
    'secure' => env('SESSION_SECURE_COOKIE'),
    'http_only' => true,

    'same_site' => 'lax',

];

Вы также можете настроить сеанс, используя переменные среды в файле .env. Например, чтобы использовать драйвер сеанса базы данных и хранить данные сеанса в таблице сеансов с базой данных типа MySQL, вы можете установить следующие переменные среды:

SESSION_DRIVER=database
SESSION_LIFETIME=120
SESSION_CONNECTION=mysql
SESSION_TABLE=sessions

Настройка сеанса Laravel

В Laravel есть три способа работы с данными сеанса: 

  • используяhelper из global session;
  • использование фасада сеанса;
  • через один Request instance

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

Инновационный бюллетень
Не пропустите самые важные новости об инновациях. Зарегистрируйтесь, чтобы получать их по электронной почте.

Глобальный помощник сеанса

В Laravel с помощью функции Global Session Helper это удобный способ доступа к сеансовым службам, предоставляемым фреймворком. Это позволяет вам хранить и извлекать данные из сеанса в вашем приложении. Вот пример того, как использовать session helper:

// Store data in the session
session(['key' => 'value']);

// Retrieve data from the session
$value = session('key');

// Remove data from the session
session()->forget('key');

// Clearing the Entire Session
session()->flush();

Вы также можете передать предварительное значениеdefinite в качестве второго аргумента функции session, который будет возвращен, если указанный ключ не будет найден в сессии:

$value = session('key', 'default');

Случай Session Request

В Laravel экземпляр запроса сеанса относится к объекту, который представляет HTTP-запрос и содержит информацию о запросе, такую ​​как метод запроса (GET, POST, PUT и т. д.), URL-адрес запроса, заголовки запроса и тело запроса. . Он также содержит различные методы, которые можно использовать для извлечения и обработки этой информации.

Обычно вы получаете доступ к экземпляру Session Request через переменную $request в приложении Laravel. Например, к сеансу можно получить доступ через экземпляр запроса, используя вспомогательную функцию session().

use Illuminate\Http\Request;

class ExampleController extends Controller
{
   public function example(Request $request)
   {
       // Store data in the session using the put function
       $request->session()->put('key', 'value');

       // Retrieve data from the session using the get function
       $value = $request->session()->get('key');

       // Check if a value exists in the session using the has function:
       if ($request->session()->has('key')) {
           // The key exists in the session.
       }

       // To determine if a value exists in the session, even if its value is null:
       if ($request->session()->exists('users')) {
           // The value exists in the session.
       }

       // Remove data from the session using the forget function
       $request->session()->forget('key');
    }
}

В этом примере переменная  $request это экземпляр класса Illuminate\Http\Request, который представляет текущий HTTP-запрос. Функция session экземпляр запроса возвращает экземпляр класса Illuminate\Session\Store, который предоставляет различные функции для работы с сессией.

Ercole Palmeri

Инновационный бюллетень
Не пропустите самые важные новости об инновациях. Зарегистрируйтесь, чтобы получать их по электронной почте.

АРТИКОЛИ recenti

Преимущества раскрасок для детей — мир волшебства для всех возрастов

Развитие мелкой моторики посредством раскрашивания готовит детей к более сложным навыкам, таким как письмо. Раскрасить…

2 мая 2024

Будущее уже здесь: как судоходная отрасль меняет мировую экономику

Военно-морской сектор является настоящей глобальной экономической державой, которая достигла 150-миллиардного рынка...

1 мая 2024

Издатели и OpenAI подписывают соглашения, регулирующие поток информации, обрабатываемой искусственным интеллектом.

В прошлый понедельник Financial Times объявила о сделке с OpenAI. FT лицензирует свою журналистику мирового уровня…

Апрель 30 2024

Онлайн-платежи: вот как потоковые сервисы заставляют вас платить вечно

Миллионы людей платят за стриминговые сервисы, выплачивая ежемесячную абонентскую плату. Распространено мнение, что вы…

Апрель 29 2024

Читайте «Инновации» на вашем языке

Инновационный бюллетень
Не пропустите самые важные новости об инновациях. Зарегистрируйтесь, чтобы получать их по электронной почте.

Следуйте за нами