Статті

Що таке сесії в 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: цей параметр визначає назву файлу 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;
  • за допомогою фасаду 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

Інноваційний бюлетень
Не пропустіть найважливіші новини про інновації. Підпишіться, щоб отримувати їх електронною поштою.

Останні статті

Veeam пропонує найповнішу підтримку програм-вимагачів, від захисту до реагування та відновлення

Coveware від Veeam продовжить надавати послуги реагування на інциденти кібервимагання. Coveware запропонує криміналістику та можливості відновлення…

Квітень 23 2024

Зелена та цифрова революція: як прогнозне технічне обслуговування трансформує нафтову та газову промисловість

Прогнозне технічне обслуговування революціонізує нафтогазовий сектор завдяки інноваційному та проактивному підходу до управління заводом.…

Квітень 22 2024

Британський антимонопольний регулятор викликає тривогу BigTech через GenAI

CMA Великобританії випустило попередження щодо поведінки Big Tech на ринку штучного інтелекту. Там…

Квітень 18 2024

Casa Green: енергетична революція для сталого майбутнього в Італії

Указ «Case Green», розроблений Європейським Союзом для підвищення енергоефективності будівель, завершив свій законодавчий процес з…

Квітень 18 2024

Читайте Innovation своєю мовою

Інноваційний бюлетень
Не пропустіть найважливіші новини про інновації. Підпишіться, щоб отримувати їх електронною поштою.

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