Članci

Šta su sesije u Laravelu, konfiguracija i upotreba sa primjerima

Laravel sesije vam omogućavaju da pohranjujete informacije i razmjenjujete ih između zahtjeva u vašoj web aplikaciji. 

Oni su jednostavan način za zadržavanje podataka za trenutnog korisnika. Ovaj vodič će vam dati osnove rada sa sesijama u Laravelu.

Šta je Laravel sesija

U Laravel-u, sesija je način za pohranjivanje informacija, za pravilno rukovanje zahtjevima korisnika. Kada korisnik pokrene Laravel aplikaciju, sesija se automatski pokreće za tog korisnika. Podaci o sesiji se pohranjuju na serveru i mali kolačić sa jedinstvenim identifikatorom se šalje korisnikovom pretraživaču da identifikuje sesiju.

Možete koristiti sesiju za pohranjivanje podataka koje želite koristiti na više stranica ili zahtjeva. Na primjer, možete koristiti sesiju za autentifikaciju korisnika ili pohraniti druge informacije koje želite koristiti tokom sesije u vašoj aplikaciji.

Konfiguracija sesije u Laravel-u

Da biste koristili sesije u Laravelu, prvo ih morate omogućiti u datoteci config/session.php konfiguracije. U ovoj datoteci moguće je postaviti konfiguracijske parametre vezane za sesije. Kao što je trajanje sesije, upravljački program koji treba koristiti za pohranjivanje podataka sesije i lokacija za pohranu podataka o sesiji. 

Datoteka ima sljedeće opcije konfiguracije:
  • Vozač: Određuje drajver pre sesijedefispreman za upotrebu. Laravel podržava nekoliko drajvera sesije: fajl, kolačić, baza podataka, apc, memcached, redis, dynamodb i niz;
  • život: Određuje broj minuta u kojima se sesija mora smatrati validnom;
  • expire_on_close: Ako je postavljeno na true, sesija će isteći kada se korisnik zatvori pretraživač;
  • šifriranje: true znači da će okvir šifrirati podatke sesije prije nego što se pohrane;
  • datoteke: Ako se koristi upravljački program sesije datoteka, ova opcija specificira lokaciju za skladištenje datoteke;
  • veza: Ako se koristi drajver sesije baze podataka, ova opcija specificira vezu baze podataka koju treba koristiti;
  • sto: Ako se koristi drajver sesije baze podataka, ova opcija specificira tablicu baze podataka koja će se koristiti za pohranjivanje podataka sesije;
  • lutrija: Niz vrijednosti koji se koristi za nasumični odabir vrijednosti kolačića ID-a sesije;
  • kolačić: Ova opcija specificira ime kolačića koji će se koristiti za pohranjivanje ID-a sesije. Opcije puta, domena, sigurna, http_only i ista_site se koriste za konfiguriranje postavki kolačića za sesiju.

Ispod je primjer datoteke sessions.php sa trajanjem sesije 120 sekundi, korištenje datoteka pohranjenih u direktoriju 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',

];

Također možete konfigurirati sesiju koristeći varijable okruženja u datoteci .env. Na primjer, da biste koristili drajver sesije baze podataka i pohranili podatke sesije u tablicu sesije, sa MySQL DB-om, možete postaviti sljedeće varijable okruženja:

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

Postavljanje Laravel sesije

Postoje tri načina rada sa podacima sesije u Laravelu: 

  • koristećihelper della global session;
  • koristeći fasadu Session;
  • kroz a Request instance

U svim ovim slučajevima, podaci koje pohranite u sesiji bit će dostupni u narednim zahtjevima istog korisnika sve dok sesija ne istekne ili se ručno ne unište.

Inovacijski bilten
Ne propustite najvažnije vijesti o inovacijama. Prijavite se da ih primate putem e-pošte.

Global Session Helper

U Laravelu, koristeći funkciju Global Session Helper to je zgodan način za pristup uslugama sesije koje pruža okvir. Omogućava vam pohranjivanje i preuzimanje podataka iz sesije u vašoj aplikaciji. Evo primjera kako koristiti 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();

Također možete proslijediti vrijednost unaprijeddefinited kao drugi argument funkcije session, koji će biti vraćen ako navedeni ključ nije pronađen u sesiji:

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

Instance of Session Request

U Laravelu, instanca zahtjeva za sesijom se odnosi na objekat koji predstavlja HTTP zahtjev i sadrži informacije o zahtjevu, kao što je metoda zahtjeva (GET, POST, PUT, itd.), URL zahtjeva, zaglavlja zahtjeva i tijelo zahtjeva . Takođe sadrži različite metode koje se mogu koristiti za pronalaženje i manipulaciju ovim informacijama.

Obično pristupate instanci Session Request kroz promenljivu $request u Laravel aplikaciji. Na primjer, sesiji se može pristupiti preko instance zahtjeva koristeći pomoćnu funkciju 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');
    }
}

U ovom primjeru, varijabla  $request to je instanca klase Illuminate\Http\Request, koji predstavlja trenutni HTTP zahtjev. Funkcija session request instance vraća instancu klase Illuminate\Session\Store, koji pruža različite funkcije za rad sa sesijom.

Ercole Palmeri

Inovacijski bilten
Ne propustite najvažnije vijesti o inovacijama. Prijavite se da ih primate putem e-pošte.

Nedavni članak

Elektronska trgovina u Italiji na +27% prema novom izvještaju Casaleggio Associati

Predstavljen godišnji izvještaj Casaleggio Associati o e-trgovini u Italiji. Izvještaj pod nazivom “AI-Commerce: granice e-trgovine s umjetnom inteligencijom”.…

17 april 2024

Sjajna ideja: Bandalux predstavlja Airpure®, zavjesu koja pročišćava zrak

Rezultat stalnih tehnoloških inovacija i posvećenosti životnoj sredini i dobrobiti ljudi. Bandalux predstavlja Airpure®, šator…

12 april 2024

Design Patterns Vs SOLID principi, prednosti i nedostaci

Dizajnerski obrasci su specifična rješenja niskog nivoa za ponavljajuće probleme u dizajnu softvera. Dizajnerski obrasci su…

11 april 2024

Magica, iOS aplikacija koja vozačima pojednostavljuje živote u upravljanju njihovim vozilom

Magica je iPhone aplikacija koja čini upravljanje vozilom jednostavnim i efikasnim, pomažući vozačima da štede i…

11 april 2024