Cikkek

Mik azok a munkamenetek a Laravelben, konfigurálás és használat példákkal

A Laravel munkamenetek lehetővé teszik az információk tárolását és a kérések közötti cserét a webalkalmazásban. 

Egyszerű módot kínálnak az adatok megőrzésére az aktuális felhasználó számára. Ez az oktatóanyag bemutatja a Laravel munkamenetekkel való munka alapjait.

Mi az a Laravel session

A Laravelben a munkamenet az információ tárolásának, a felhasználó által küldött kérések helyes kezelésének módja. Amikor egy felhasználó elindít egy Laravel alkalmazást, a munkamenet automatikusan elindul az adott felhasználó számára. A munkamenet adatait a szerver tárolja, és egy egyedi azonosítóval rendelkező kis cookie kerül a felhasználó böngészőjébe a munkamenet azonosítására.

A munkamenet segítségével tárolhatja azokat az adatokat, amelyeket több oldalon vagy kérésben szeretne használni. Használhatja például a munkamenetet felhasználói hitelesítésre, vagy tárolhat más információkat, amelyeket a munkamenet során használni szeretne az alkalmazásban.

Munkamenet beállítása Laravelben

A munkamenetek Laravelben való használatához először engedélyeznie kell azokat a fájlban config/session.php konfigurációjának. Ebben a fájlban lehetőség van a munkamenetekhez kapcsolódó konfigurációs paraméterek beállítására. Ilyen például a munkamenet időtartama, a munkamenetadatok tárolására használandó illesztőprogram és a munkamenetadatok tárolási helye. 

A fájl a következő konfigurációs beállításokkal rendelkezik:
  • gépkocsivezető: Megadja a munkamenet előtti illesztőprogramotdefihasználatra kész. A Laravel számos munkamenet-illesztőprogramot támogat: fájl, cookie, adatbázis, apc, memcached, redis, dynamodb és tömb;
  • élettartam: Megadja, hogy hány percben kell érvényesnek tekinteni a munkamenetet;
  • expire_on_close: Ha igazra van állítva, a munkamenet a felhasználó böngészőjének bezárásakor lejár;
  • titkosítani: igaz azt jelenti, hogy a keretrendszer titkosítja a munkamenet adatait, mielőtt azok tárolásra kerülnek;
  • fájlok: Ha a fájl-munkamenet-illesztőprogramot használja, ez a beállítás határozza meg a fájl tárolási helyét;
  • kapcsolat: Ha az adatbázis-munkamenet-illesztőprogramot használja, ez a beállítás határozza meg a használandó adatbázis-kapcsolatot;
  • táblázat: Ha az adatbázis-munkamenet-illesztőprogramot használja, ez a beállítás megadja a munkamenetadatok tárolására használandó adatbázistáblát;
  • lottó: Értéktömb, amelyet a munkamenet-azonosító cookie-értékének véletlenszerű kiválasztására használnak;
  • aprósütemény: Ez az opció adja meg a munkamenet-azonosító tárolására használt cookie nevét. Az elérési út, a domain, a biztonságos, a http_only és a same_site beállítások a munkamenet cookie-beállításainak konfigurálására szolgálnak.

Az alábbiakban egy fájl példája látható sessions.php munkamenet időtartama 120 másodperc, a könyvtárban tárolt fájlok használata 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',

];

A munkamenetet a fájlban található környezeti változók használatával is beállíthatja .env. Például az adatbázis-munkamenet-illesztőprogram használatához és a munkamenet-adatok munkamenet-táblázatban való tárolásához MySQL-típusú DB-vel a következő környezeti változókat állíthatja be:

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

Laravel munkamenet beállítása

Háromféleképpen dolgozhat a munkamenetadatokkal a Laravelben: 

  • használni ahelper az global session;
  • a Session homlokzat használatával;
  • keresztül a Request instance

Mindezekben az esetekben a munkamenetben tárolt adatok elérhetők lesznek ugyanazon felhasználó további kéréseiben, amíg a munkamenet le nem jár vagy manuálisan megsemmisül.

Innovációs hírlevél
Ne maradjon le az innovációval kapcsolatos legfontosabb hírekről. Regisztráljon, hogy megkapja őket e-mailben.

Global Session Helper

Laravelben a függvény használatával Global Session Helper ez egy kényelmes módja a keretrendszer által biztosított munkamenet-szolgáltatások elérésének. Lehetővé teszi a munkamenet adatainak tárolását és lekérését az alkalmazásban. Íme egy példa arra, hogyan kell használni a 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();

Előértéket is átadhatdefinite a függvény második argumentumaként session, amely akkor jelenik meg, ha a megadott kulcs nem található a munkamenetben:

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

Például az Session Request

A Laravelben a munkamenet-kérelem példány egy olyan objektumra utal, amely egy HTTP-kérést reprezentál, és információkat tartalmaz a kérésről, például a kérés metódusát (GET, POST, PUT stb.), a kérés URL-jét, a kérés fejléceit és a kérés törzsét. . Különféle módszereket is tartalmaz ezen információk lekérésére és manipulálására.

Általában eléri a példányát Session Request a változón keresztül $request egy Laravel alkalmazásban. Például egy munkamenet egy kéréspéldányon keresztül érhető el a helper funkció használatával 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');
    }
}

Ebben a példában a változó  $request az osztály egy példánya Illuminate\Http\Request, amely az aktuális HTTP-kérést jelöli. A funkció session A request példány az osztály egy példányát adja vissza Illuminate\Session\Store, amely különféle funkciókat biztosít a munkamenettel való munkavégzéshez.

Ercole Palmeri

Innovációs hírlevél
Ne maradjon le az innovációval kapcsolatos legfontosabb hírekről. Regisztráljon, hogy megkapja őket e-mailben.

Friss cikkek

Innovatív beavatkozás a kiterjesztett valóságba, egy Apple nézővel a Catania Poliklinikán

Szemplasztikai műtétet végeztek az Apple Vision Pro reklámmegjelenítővel a Catania Poliklinikán…

Május 3 2024

A színező oldalak előnyei gyerekeknek – a varázslatok világa minden korosztály számára

A finom motoros készségek színezéssel történő fejlesztése felkészíti a gyerekeket olyan összetettebb készségekre, mint az írás. Kiszínezni…

Május 2 2024

A jövő itt van: Hogyan forradalmasítja a hajózási ágazat a globális gazdaságot

A haditengerészeti szektor igazi világgazdasági hatalom, amely egy 150 milliárdos piac felé navigált...

Május 1 2024

A kiadók és az OpenAI megállapodásokat írnak alá a mesterséges intelligencia által feldolgozott információáramlás szabályozására

Múlt hétfőn a Financial Times bejelentette, hogy megállapodást köt az OpenAI-val. Az FT engedélyezi világszínvonalú újságírását…

30 április 2024