De är ett enkelt sätt att bevara data för den aktuella användaren. Denna handledning ger dig grunderna för att arbeta med sessioner i Laravel.
I Laravel är en session ett sätt att lagra information, för att korrekt hantera förfrågningar från en användare. När en användare startar en Laravel-applikation startas en session automatiskt för den användaren. Sessionsdata lagras på servern och en liten cookie med en unik identifierare skickas till användarens webbläsare för att identifiera sessionen.
Du kan använda session för att lagra data som du vill använda på flera sidor eller förfrågningar. Du kan till exempel använda sessionen för användarautentisering eller lagra annan information som du vill använda under sessionen i din applikation.
För att använda sessioner i Laravel måste du först aktivera dem i filen config/session.php
av konfiguration. I den här filen är det möjligt att ställa in konfigurationsparametrar relaterade till sessioner. Till exempel sessionens varaktighet, drivrutinen som ska användas för att lagra sessionsdata och lagringsplatsen för sessionsdata.
Nedan är ett exempel på en fil sessions.php
med sessionslängd 120 sekunder, användning av filer lagrade i katalogen 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',
];
Du kan också konfigurera sessionen med hjälp av miljövariabler i filen .env
. För att till exempel använda databassessionsdrivrutinen och lagra sessionsdata i en sessionstabell, med MySQL-typ DB, kan du ställa in följande miljövariabler:
SESSION_DRIVER=database
SESSION_LIFETIME=120
SESSION_CONNECTION=mysql
SESSION_TABLE=sessions
Det finns tre sätt att arbeta med sessionsdata i Laravel:
helper
av global session
;Request instance
. I alla dessa fall kommer data du lagrar i sessionen att vara tillgänglig i efterföljande förfrågningar från samma användare tills sessionen löper ut eller förstörs manuellt.
I Laravel, med hjälp av funktionen Global Session Helper
det är ett bekvämt sätt att komma åt sessionstjänsterna som tillhandahålls av ramverket. Det låter dig lagra och hämta data från sessionen i din applikation. Här är ett exempel på hur man använder 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();
Du kan också skicka ett förvärdedefinite som det andra argumentet till funktionen session
, som kommer att returneras om den angivna nyckeln inte hittas i sessionen:
$value = session('key', 'default');
Session Request
I Laravel hänvisar en sessionsbegäraninstans till ett objekt som representerar en HTTP-begäran och innehåller information om begäran, såsom förfrågningsmetoden (GET, POST, PUT, etc.), begäran-URL, förfrågans rubriker och förfrågningskroppen . Den innehåller också olika metoder som kan användas för att hämta och manipulera denna information.
Vanligtvis kommer du åt instansen av Session Request
genom variabeln $request
i en Laravel-applikation. Till exempel kan en session nås genom en begärandeinstans med hjälp av hjälpfunktionen 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');
}
}
I det här exemplet är variabeln $request
det är en instans av klassen Illuminate\Http\Request
, som representerar den aktuella HTTP-begäran. Funktionen session
request instans returnerar en instans av klassen Illuminate\Session\Store
, som ger olika funktioner för att arbeta med sessionen.
Ercole Palmeri
En oftalmoplastikoperation med Apple Vision Pro kommersiella tittare utfördes på Catania Polyclinic...
Att utveckla finmotorik genom färgläggning förbereder barn för mer komplexa färdigheter som att skriva. Att färglägga…
Marinesektorn är en sann global ekonomisk makt, som har navigerat mot en marknad på 150 miljarder...
I måndags tillkännagav Financial Times ett avtal med OpenAI. FT licensierar sin journalistik i världsklass...