towary

Czym są sesje w Laravelu, konfiguracja i zastosowanie z przykładami

Sesje Laravel pozwalają przechowywać informacje i wymieniać je między żądaniami w Twojej aplikacji internetowej. 

Są łatwym sposobem na zachowanie danych dla bieżącego użytkownika. W tym samouczku poznasz podstawy pracy z sesjami w Laravel.

Co to jest sesja Laravela

W Laravel sesja jest sposobem przechowywania informacji, aby poprawnie obsługiwać żądania wysyłane przez użytkownika. Gdy użytkownik uruchamia aplikację Laravel, sesja jest automatycznie uruchamiana dla tego użytkownika. Dane sesji są przechowywane na serwerze, a mały plik cookie z unikalnym identyfikatorem jest wysyłany do przeglądarki użytkownika w celu identyfikacji sesji.

Możesz użyć sesji do przechowywania danych, których chcesz użyć na wielu stronach lub żądaniach. Na przykład możesz użyć sesji do uwierzytelnienia użytkownika lub przechowywać inne informacje, których chcesz użyć podczas sesji w swojej aplikacji.

Konfiguracja sesji w Laravel

Aby korzystać z sesji w Laravel, musisz najpierw włączyć je w pliku config/session.php konfiguracji. W pliku tym można ustawić parametry konfiguracyjne związane z sesjami. Na przykład czas trwania sesji, sterownik używany do przechowywania danych sesji oraz miejsce przechowywania danych sesji. 

Plik ma następujące opcje konfiguracyjne:
  • kierowca: Określa sterownik przed sesjądefigotowy do użycia. Laravel obsługuje kilka sterowników sesji: plik, plik cookie, baza danych, apc, memcached, redis, dynamodb i array;
  • dożywotni: Określa liczbę minut, w ciągu których sesja musi zostać uznana za ważną;
  • wygasa_przy_zamknięciu: Jeśli ustawione na true, sesja wygaśnie po zamknięciu przeglądarki użytkownika;
  • Szyfrowanie: true oznacza, że ​​struktura zaszyfruje dane sesji przed ich zapisaniem;
  • pliki: Jeśli używany jest sterownik sesji plików, ta opcja określa miejsce przechowywania plików;
  • połączenie: Jeśli używany jest sterownik sesji bazy danych, ta opcja określa używane połączenie z bazą danych;
  • stół: Jeśli używany jest sterownik sesji bazy danych, ta opcja określa tabelę bazy danych używaną do przechowywania danych sesji;
  • loteria: Tablica wartości używana do losowego wybierania wartości pliku cookie identyfikatora sesji;
  • ciastko: Ta opcja określa nazwę pliku cookie, który będzie używany do przechowywania identyfikatora sesji. Opcje path, domain, secure, http_only i same_site służą do konfiguracji ustawień plików cookie dla sesji.

Poniżej przykład pliku sessions.php z czasem trwania sesji 120 sekund, korzystanie z plików zapisanych w katalogu 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',

];

Możesz także skonfigurować sesję przy użyciu zmiennych środowiskowych w pliku .env. Na przykład, aby użyć sterownika sesji bazy danych i przechowywać dane sesji w tabeli sesji z bazą danych typu MySQL, można ustawić następujące zmienne środowiskowe:

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

Konfiguracja sesji Laravel

Istnieją trzy sposoby pracy z danymi sesji w Laravel: 

  • używająchelper z global session;
  • z wykorzystaniem fasady Session;
  • przez jeden Request instance

We wszystkich tych przypadkach dane przechowywane w sesji będą dostępne w kolejnych żądaniach tego samego użytkownika, aż do wygaśnięcia sesji lub ręcznego zniszczenia.

Biuletyn innowacji
Nie przegap najważniejszych wiadomości dotyczących innowacji. Zarejestruj się, aby otrzymywać je e-mailem.

Globalny pomocnik sesji

W Laravel, używając funkcji Global Session Helper to wygodny sposób na dostęp do usług sesyjnych dostarczanych przez framework. Pozwala przechowywać i pobierać dane z sesji w Twojej aplikacji. Oto przykład, jak użyć 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();

Możesz także przekazać wartość wstępnądefinite jako drugi argument funkcji session, który zostanie zwrócony, jeśli określony klucz nie zostanie znaleziony w sesji:

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

Wystąpienie Session Request

W Laravel instancja żądania sesji odnosi się do obiektu, który reprezentuje żądanie HTTP i zawiera informacje o żądaniu, takie jak metoda żądania (GET, POST, PUT itp.), adres URL żądania, nagłówki żądania i treść żądania . Zawiera również różne metody, których można użyć do pobierania i manipulowania tymi informacjami.

Zwykle uzyskujesz dostęp do instancji programu Session Request przez zmienną $request w aplikacji Laravel. Na przykład dostęp do sesji można uzyskać za pośrednictwem instancji żądania przy użyciu funkcji pomocniczej 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');
    }
}

W tym przykładzie zmienna  $request jest to instancja klasy Illuminate\Http\Request, który reprezentuje bieżące żądanie HTTP. Funkcja session request instance zwraca instancję klasy Illuminate\Session\Store, który zapewnia różne funkcje do pracy z sesją.

Ercole Palmeri

Biuletyn innowacji
Nie przegap najważniejszych wiadomości dotyczących innowacji. Zarejestruj się, aby otrzymywać je e-mailem.

Najnowsze artykuły

Veeam oferuje najbardziej wszechstronną obsługę oprogramowania ransomware, od ochrony po reagowanie i odzyskiwanie

Coveware by Veeam będzie w dalszym ciągu świadczyć usługi reagowania na incydenty związane z wyłudzeniami cybernetycznymi. Coveware będzie oferować funkcje kryminalistyczne i naprawcze…

Kwiecień 23 2024

Rewolucja ekologiczna i cyfrowa: jak konserwacja predykcyjna zmienia przemysł naftowy i gazowy

Konserwacja predykcyjna rewolucjonizuje sektor naftowo-gazowy dzięki innowacyjnemu i proaktywnemu podejściu do zarządzania zakładami.…

Kwiecień 22 2024

Brytyjski organ antymonopolowy podnosi alarm BigTech w związku z GenAI

Brytyjskie CMA wydało ostrzeżenie dotyczące zachowań Big Tech na rynku sztucznej inteligencji. Tam…

Kwiecień 18 2024

Casa Green: rewolucja energetyczna dla zrównoważonej przyszłości we Włoszech

Rozporządzenie w sprawie zielonych domów, opracowane przez Unię Europejską w celu zwiększenia efektywności energetycznej budynków, zakończyło proces legislacyjny…

Kwiecień 18 2024