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.
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.
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.
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
Háromféleképpen dolgozhat a munkamenetadatokkal a Laravelben:
helper
az global session
;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.
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');
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
Szemplasztikai műtétet végeztek az Apple Vision Pro reklámmegjelenítővel a Catania Poliklinikán…
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…
A haditengerészeti szektor igazi világgazdasági hatalom, amely egy 150 milliárdos piac felé navigált...
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…