Ze zijn een gemakkelijke manier om gegevens voor de huidige gebruiker vast te houden. Deze tutorial geeft je de basis van het werken met sessies in Laravel.
In Laravel is een sessie een manier om informatie op te slaan, om verzoeken van een gebruiker correct af te handelen. Wanneer een gebruiker een Laravel-applicatie start, start er automatisch een sessie voor die gebruiker. Sessiegegevens worden op de server opgeslagen en een kleine cookie met een unieke identificatiecode wordt naar de browser van de gebruiker gestuurd om de sessie te identificeren.
U kunt sessie gebruiken om gegevens op te slaan die u op meerdere pagina's of verzoeken wilt gebruiken. U kunt de sessie bijvoorbeeld gebruiken voor gebruikersauthenticatie of andere informatie opslaan die u tijdens de sessie wilt gebruiken in uw toepassing.
Om sessies in Laravel te gebruiken, moet u ze eerst inschakelen in het bestand config/session.php
van configuratie. In dit bestand is het mogelijk om configuratieparameters in te stellen met betrekking tot sessies. Zoals de duur van de sessie, de te gebruiken driver voor het opslaan van de sessiegegevens en de opslaglocatie voor de sessiegegevens.
Hieronder ziet u een voorbeeld van een bestand sessions.php
met sessieduur 120 seconden, gebruik van bestanden die zijn opgeslagen in de directory 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',
];
U kunt de sessie ook configureren met omgevingsvariabelen in het bestand .env
. Om bijvoorbeeld het databasesessiestuurprogramma te gebruiken en sessiegegevens in een sessietabel op te slaan, met MySQL-type DB, kunt u de volgende omgevingsvariabelen instellen:
SESSION_DRIVER=database
SESSION_LIFETIME=120
SESSION_CONNECTION=mysql
SESSION_TABLE=sessions
Er zijn drie manieren om met sessiegegevens in Laravel te werken:
helper
van global session
;Request instance
. In al deze gevallen zullen de gegevens die u in de sessie opslaat, beschikbaar zijn in latere verzoeken van dezelfde gebruiker totdat de sessie verloopt of handmatig wordt vernietigd.
In Laravel, met behulp van de functie Global Session Helper
het is een handige manier om toegang te krijgen tot de sessieservices die door het framework worden geleverd. Hiermee kunt u gegevens van de sessie in uw applicatie opslaan en ophalen. Hier is een voorbeeld van het gebruik van de 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();
U kunt ook een voorwaarde doorgevendefinite als het tweede argument voor de functie session
, die wordt geretourneerd als de opgegeven sleutel niet wordt gevonden in de sessie:
$value = session('key', 'default');
Session Request
In Laravel verwijst een sessieverzoekinstantie naar een object dat een HTTP-verzoek vertegenwoordigt en informatie over het verzoek bevat, zoals de verzoekmethode (GET, POST, PUT, etc.), verzoek-URL, headers van het verzoek en de hoofdtekst van het verzoek . Het bevat ook verschillende methoden die kunnen worden gebruikt om deze informatie op te halen en te manipuleren.
Meestal benadert u de instantie van het Session Request
via de variabele $request
in een Laravel-applicatie. Een sessie kan bijvoorbeeld worden benaderd via een verzoekinstantie met behulp van de helperfunctie 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');
}
}
In dit voorbeeld de variabele $request
het is een instantie van de klasse Illuminate\Http\Request
, wat het huidige HTTP-verzoek vertegenwoordigt. De functie session
request instance retourneert een instantie van de klasse Illuminate\Session\Store
, die verschillende functies biedt voor het werken met de sessie.
Ercole Palmeri
De marinesector is een echte mondiale economische macht, die is genavigeerd naar een markt van 150 miljard...
Afgelopen maandag maakte de Financial Times een deal met OpenAI bekend. FT geeft licenties voor haar journalistiek van wereldklasse...
Miljoenen mensen betalen voor streamingdiensten en betalen maandelijkse abonnementskosten. De algemene mening is dat je…
Coveware by Veeam zal responsdiensten op het gebied van cyberafpersingsincidenten blijven leveren. Coveware zal forensische en herstelmogelijkheden bieden...