tovar

Čo sú relácie v Laravel, konfigurácia a použitie s príkladmi

Relácie Laravel vám umožňujú ukladať informácie a vymieňať si ich medzi požiadavkami vo vašej webovej aplikácii. 

Predstavujú jednoduchý spôsob uchovávania údajov pre aktuálneho používateľa. Tento tutoriál vám poskytne základy práce s reláciami v Laravel.

Čo je Laravel session

V Laravel je relácia spôsob, ako ukladať informácie a správne spracovať požiadavky používateľa. Keď používateľ spustí aplikáciu Laravel, pre daného používateľa sa automaticky spustí relácia. Údaje o relácii sa uložia na server a do prehliadača používateľa sa odošle malý súbor cookie s jedinečným identifikátorom na identifikáciu relácie.

Reláciu môžete použiť na ukladanie údajov, ktoré chcete použiť na viacerých stránkach alebo požiadavkách. Reláciu môžete napríklad použiť na autentifikáciu užívateľa alebo uložiť iné informácie, ktoré chcete použiť počas relácie vo vašej aplikácii.

Konfigurácia relácie v Laravel

Ak chcete používať relácie v Laravel, musíte ich najskôr povoliť v súbore config/session.php konfigurácie. V tomto súbore je možné nastaviť konfiguračné parametre súvisiace s reláciami. Napríklad trvanie relácie, ovládač, ktorý sa má použiť na uloženie údajov relácie, a miesto uloženia údajov relácie. 

Súbor má nasledujúce možnosti konfigurácie:
  • vodič: Určuje ovládač pred relácioudefipripravený k použitiu. Laravel podporuje niekoľko ovládačov relácie: súbor, cookie, databáza, apc, memcached, redis, dynamodb a pole;
  • život: Určuje počet minút, počas ktorých musí byť relácia považovaná za platnú;
  • expire_on_close: Ak je nastavené na hodnotu true, relácia vyprší po zatvorení prehliadača používateľa;
  • šifrovanie: true znamená, že rámec zašifruje dáta relácie pred ich uložením;
  • súbory: Ak sa používa ovládač relácie súborov, táto možnosť určuje miesto uloženia súboru;
  • spojenie: Ak sa používa ovládač relácie databázy, táto možnosť určuje pripojenie k databáze, ktoré sa má použiť;
  • tabuľka: Ak sa používa ovládač relácie databázy, táto voľba určuje databázovú tabuľku, ktorá sa má použiť na ukladanie údajov relácie;
  • lotérie: pole hodnôt používaných na náhodný výber hodnoty súboru cookie ID relácie;
  • sušienka: Táto možnosť určuje názov súboru cookie, ktorý sa použije na uloženie ID relácie. Možnosti cesta, doména, zabezpečená, http_only a same_site sa používajú na konfiguráciu nastavení súborov cookie pre reláciu.

Nižšie je uvedený príklad súboru sessions.php s trvaním relácie 120 sekúnd, použitie súborov uložených v adresári 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',

];

Reláciu môžete nakonfigurovať aj pomocou premenných prostredia v súbore .env. Ak chcete napríklad použiť ovládač databázovej relácie a uložiť údaje relácie do tabuľky relácie, s DB typu MySQL môžete nastaviť nasledujúce premenné prostredia:

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

Nastavenie relácie Laravel

Existujú tri spôsoby, ako pracovať s údajmi relácie v Laravel: 

  • pomocouhelper z global session;
  • pomocou fasády Session;
  • cez a Request instance

Vo všetkých týchto prípadoch budú údaje, ktoré uložíte v relácii, dostupné v následných požiadavkách uskutočnených tým istým používateľom, až kým relácia nevyprší alebo nebude manuálne zničená.

Inovačný bulletin
Nenechajte si ujsť najdôležitejšie novinky o inováciách. Prihláste sa na ich odber e-mailom.

Pomocník globálnej relácie

V Laravel pomocou funkcie Global Session Helper je to pohodlný spôsob prístupu k službám relácie poskytovaným rámcom. Umožňuje vám ukladať a získavať údaje z relácie vo vašej aplikácii. Tu je príklad, ako použiť 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 tiež zadať predbežnú hodnotudefinite ako druhý argument funkcie session, ktorý sa vráti, ak sa zadaný kľúč nenájde v relácii:

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

Inštancia Session Request

V Laravel sa inštancia požiadavky relácie vzťahuje na objekt, ktorý predstavuje požiadavku HTTP a obsahuje informácie o požiadavke, ako je metóda požiadavky (GET, POST, PUT atď.), URL požiadavky, hlavičky požiadavky a telo požiadavky. . Obsahuje tiež rôzne metódy, ktoré možno použiť na získanie a manipuláciu s týmito informáciami.

Zvyčajne máte prístup k inštancii súboru Session Request cez premennú $request v aplikácii Laravel. Napríklad k relácii možno pristupovať cez inštanciu požiadavky pomocou funkcie pomocníka 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 príklade premenná  $request je to inštancia triedy Illuminate\Http\Request, ktorý predstavuje aktuálnu požiadavku HTTP. Funkcia session request instance vráti inštanciu triedy Illuminate\Session\Store, ktorý poskytuje rôzne funkcie pre prácu s reláciou.

Ercole Palmeri

Inovačný bulletin
Nenechajte si ujsť najdôležitejšie novinky o inováciách. Prihláste sa na ich odber e-mailom.

Nedávne články

Výhody farebných stránok pre deti - svet mágie pre všetky vekové kategórie

Rozvíjanie jemnej motoriky pomocou vyfarbovania pripravuje deti na zložitejšie zručnosti, ako je písanie. Na farbenie…

2 mája 2024

Budúcnosť je tu: Ako námorný priemysel prináša revolúciu do globálnej ekonomiky

Námorný sektor je skutočnou globálnou ekonomickou veľmocou, ktorá smerovala k 150 miliardovému trhu...

1 mája 2024

Vydavatelia a OpenAI podpisujú dohody o regulácii toku informácií spracovávaných umelou inteligenciou

Minulý pondelok Financial Times oznámili dohodu s OpenAI. FT licencuje svoju žurnalistiku svetovej triedy…

Apríla 30 2024

Online platby: Takto budete vďaka streamovacím službám platiť navždy

Milióny ľudí platia za streamovacie služby a platia mesačné predplatné. Je bežný názor, že si…

Apríla 29 2024