De er en nem måde at bevare data på for den aktuelle bruger. Denne tutorial giver dig det grundlæggende i at arbejde med sessioner i Laravel.
I Laravel er en session en måde at gemme information på, for korrekt at håndtere anmodninger fra en bruger. Når en bruger starter en Laravel-applikation, startes en session automatisk for denne bruger. Sessionsdata gemmes på serveren, og en lille cookie med en unik identifikator sendes til brugerens browser for at identificere sessionen.
Du kan bruge session til at gemme data, som du vil bruge på tværs af flere sider eller anmodninger. For eksempel kan du bruge sessionen til brugergodkendelse eller gemme andre oplysninger, som du vil bruge under sessionen i din applikation.
For at bruge sessioner i Laravel skal du først aktivere dem i filen config/session.php
af konfiguration. I denne fil er det muligt at indstille konfigurationsparametre relateret til sessioner. For eksempel sessionens varighed, driveren, der skal bruges til lagring af sessionsdataene, og lagringsstedet for sessionsdataene.
Nedenfor er et eksempel på en fil sessions.php
med sessionsvarighed 120 sekunder, brug af filer gemt i mappen 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 også konfigurere sessionen ved hjælp af miljøvariabler i filen .env
. For at bruge databasesessionsdriveren og gemme sessionsdata i en sessionstabel med MySQL-type DB kan du indstille følgende miljøvariabler:
SESSION_DRIVER=database
SESSION_LIFETIME=120
SESSION_CONNECTION=mysql
SESSION_TABLE=sessions
Der er tre måder at arbejde med sessionsdata på i Laravel:
helper
af global session
;Request instance
. I alle disse tilfælde vil de data, du gemmer i sessionen, være tilgængelige i efterfølgende anmodninger fra den samme bruger, indtil sessionen udløber eller manuelt destrueres.
I Laravel, ved hjælp af funktionen Global Session Helper
det er en bekvem måde at få adgang til sessionstjenesterne, der leveres af frameworket. Det giver dig mulighed for at gemme og hente data fra sessionen i din applikation. Her er et eksempel på, hvordan du bruger 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 også sende en præværdidefinite som det andet argument til funktionen session
, som vil blive returneret, hvis den angivne nøgle ikke findes i sessionen:
$value = session('key', 'default');
Session Request
I Laravel refererer en sessionsanmodningsinstans til et objekt, der repræsenterer en HTTP-anmodning og indeholder oplysninger om anmodningen, såsom anmodningsmetoden (GET, POST, PUT osv.), anmodnings-URL, overskrifter på anmodningen og anmodningsteksten . Den indeholder også forskellige metoder, der kan bruges til at hente og manipulere denne information.
Typisk får du adgang til instansen af Session Request
gennem variablen $request
i en Laravel-applikation. For eksempel kan en session tilgås gennem en anmodningsinstans ved hjælp af hjælpefunktionen 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 dette eksempel er variablen $request
det er et eksempel på klassen Illuminate\Http\Request
, som repræsenterer den aktuelle HTTP-anmodning. Funktionen session
request instans returnerer en instans af klassen Illuminate\Session\Store
, som giver forskellige funktioner til at arbejde med sessionen.
Ercole Palmeri
Coveware by Veeam vil fortsætte med at levere responstjenester til cyberafpresning. Coveware vil tilbyde kriminaltekniske og afhjælpende funktioner...
Forudsigende vedligeholdelse revolutionerer olie- og gassektoren med en innovativ og proaktiv tilgang til anlægsstyring...
Det britiske CMA har udsendt en advarsel om Big Techs adfærd på markedet for kunstig intelligens. Der…
Dekretet om "grønne huse", der er formuleret af Den Europæiske Union for at øge bygningers energieffektivitet, har afsluttet sin lovgivningsproces med...