Články

Co jsou relace v Laravelu, konfigurace a použití s ​​příklady

Relace Laravel vám umožňují ukládat informace a vyměňovat si je mezi požadavky ve vaší webové aplikaci. 

Představují snadný způsob, jak zachovat data pro aktuálního uživatele. Tento tutoriál vám poskytne základy práce s relacemi v Laravelu.

Co je Laravel session

V Laravelu je relace způsob, jak uložit informace, jak správně zpracovat požadavky uživatele. Když uživatel spustí aplikaci Laravel, automaticky se pro tohoto uživatele spustí relace. Údaje o relaci jsou uloženy na serveru a do prohlížeče uživatele je odeslán malý soubor cookie s jedinečným identifikátorem, který relaci identifikuje.

Relaci můžete použít k ukládání dat, která chcete použít na více stránkách nebo žádostech. Můžete například použít relaci pro autentizaci uživatele nebo uložit další informace, které chcete použít během relace ve vaší aplikaci.

Konfigurace relace v Laravelu

Chcete-li používat relace v Laravelu, musíte je nejprve povolit v souboru config/session.php konfigurace. V tomto souboru je možné nastavit konfigurační parametry související s relacemi. Jako je doba trvání relace, ovladač, který se má použít pro ukládání dat relace, a umístění úložiště pro data relace. 

Soubor má následující možnosti konfigurace:
  • řidič: Určuje ovladač před relacídefipřipraven k použití. Laravel podporuje několik ovladačů relací: soubor, cookie, databáze, apc, memcached, redis, dynamodb a pole;
  • život: Určuje počet minut, během kterých musí být relace považována za platnou;
  • expire_on_close: Je-li nastaveno na hodnotu true, platnost relace vyprší po zavření prohlížeče uživatele;
  • šifrování: true znamená, že framework zašifruje data relace před jejich uložením;
  • soubory: Pokud je použit ovladač relace souborů, tato volba určuje umístění úložiště souborů;
  • spojení: Pokud je použit ovladač relace databáze, tato možnost určuje připojení k databázi, které se má použít;
  • tabulka: Pokud je použit ovladač relace databáze, tato volba určuje databázovou tabulku, která se má použít k ukládání dat relace;
  • loterie: Pole hodnot používané k náhodnému výběru hodnoty cookie ID relace;
  • sušenka: Tato možnost určuje název souboru cookie, který bude použit k uložení ID relace. Možnosti path, domain, secure, http_only a same_site se používají ke konfiguraci nastavení cookie pro relaci.

Níže je uveden příklad souboru sessions.php s dobou trvání relace 120 sekund, použití souborů uložených v adresáři 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',

];

Relaci můžete také nakonfigurovat pomocí proměnných prostředí v souboru .env. Chcete-li například použít ovladač relace databáze a uložit data relace do tabulky relací, s DB typu MySQL můžete nastavit následující proměnné prostředí:

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

Nastavení Laravel session

V Laravelu jsou tři způsoby práce s daty relace: 

  • za použitíhelper z global session;
  • pomocí fasády Session;
  • prostřednictvím a Request instance

Ve všech těchto případech budou data uložená v relaci dostupná v následných požadavcích stejného uživatele, dokud relace nevyprší nebo nebude ručně zničena.

Inovační zpravodaj
Nenechte si ujít nejdůležitější novinky o inovacích. Přihlaste se k jejich odběru e-mailem.

Pomocník pro globální relace

V Laravelu pomocí funkce Global Session Helper je to pohodlný způsob přístupu ke službám relace poskytovaným rámcem. Umožňuje vám ukládat a načítat data z relace ve vaší aplikaci. Zde je příklad, jak použít 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();

Můžete také předat předběžnou hodnotudefinite jako druhý argument funkce session, která bude vrácena, pokud zadaný klíč nebude v relaci nalezen:

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

Instance of Session Request

V Laravelu instance požadavku relace odkazuje na objekt, který představuje požadavek HTTP a obsahuje informace o požadavku, jako je metoda požadavku (GET, POST, PUT atd.), URL požadavku, záhlaví požadavku a tělo požadavku. . Obsahuje také různé metody, které lze použít k získání a manipulaci s těmito informacemi.

Obvykle přistupujete k instanci souboru Session Request přes proměnnou $request v aplikaci Laravel. Například k relaci lze přistupovat prostřednictvím instance požadavku pomocí funkce helper 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');
    }
}

V tomto příkladu proměnná  $request je to instance třídy Illuminate\Http\Request, který představuje aktuální požadavek HTTP. Funkce session instance požadavku vrátí instanci třídy Illuminate\Session\Store, který poskytuje různé funkce pro práci s relací.

Ercole Palmeri

Inovační zpravodaj
Nenechte si ujít nejdůležitější novinky o inovacích. Přihlaste se k jejich odběru e-mailem.

Nedávné články

Výhody omalovánek pro děti - svět kouzel pro všechny věkové kategorie

Rozvíjení jemné motoriky prostřednictvím vybarvování připravuje děti na složitější dovednosti, jako je psaní. Barvit…

2. května 2024

Budoucnost je tady: Jak lodní průmysl revolucionizuje globální ekonomiku

Námořní sektor je skutečnou globální ekonomickou velmocí, která se dostala na 150miliardový trh...

1. května 2024

Vydavatelé a OpenAI podepisují dohody o regulaci toku informací zpracovávaných umělou inteligencí

Minulé pondělí Financial Times oznámily dohodu s OpenAI. FT licencuje svou prvotřídní žurnalistiku…

30. dubna 2024

Online platby: Zde je návod, jak vám streamovací služby umožňují platit navždy

Miliony lidí platí za streamovací služby a platí měsíční předplatné. Je obecný názor, že jste…

29. dubna 2024