Artikoloj

Kio estas sesioj en Laravel, agordo kaj uzo kun ekzemploj

Laravel-sesioj permesas vin stoki informojn, kaj interŝanĝi ĝin inter petoj en via TTT-aplikaĵo. 

Ili estas facila maniero por konservi datumojn por la nuna uzanto. Ĉi tiu lernilo donos al vi la bazojn pri laboro kun sesioj en Laravel.

Kio estas Laravel-sesio

En Laravel, sesio estas maniero konservi informojn, por ĝuste trakti petojn faritajn de uzanto. Kiam uzanto komencas Laravel-aplikaĵon, sesio aŭtomate komenciĝas por tiu uzanto. Sesiaj datumoj estas konservitaj en la servilo kaj malgranda kuketo kun unika identigilo estas sendita al la retumilo de la uzanto por identigi la seancon.

Vi povas uzi seancon por konservi datumojn, kiujn vi volas uzi tra pluraj paĝoj aŭ petoj. Ekzemple, vi povus uzi la seancon por uzantaŭtentigo aŭ stoki aliajn informojn, kiujn vi volas uzi dum la sesio en via aplikaĵo.

Sesia agordo en Laravel

Por uzi sesiojn en Laravel, vi unue devas ebligi ilin en la dosiero config/session.php de agordo. En ĉi tiu dosiero eblas agordi agordajn parametrojn rilatajn al sesioj. Kiel la daŭro de la sesio, la ŝoforo uzenda por stoki la sesiajn datumojn, kaj la stokan lokon por la seancaj datumoj. 

La dosiero havas la jenajn agordajn opciojn:
  • ŝoforo: Specifas la antaŭsesian pelilondefipreta por uzi. Laravel subtenas plurajn sesiajn ŝoforojn: dosiero, kuketo, datumbazo, apc, memcached, redis, dynamodb kaj tabelo;
  • vivdaŭro: Specifas la nombron da minutoj en kiuj la sesio devas esti konsiderata valida;
  • expire_on_close: Se agordita al vera, la sesio eksvalidiĝos kiam la retumilo de la uzanto estas fermita;
  • ĉifri: vera signifas ke la kadro ĉifris seancajn datumojn antaŭ ol ĝi estas stokita;
  • dosierojn: Se la dosiersesio-ŝoforo estas uzata, ĉi tiu opcio specifas la dosier-stokan lokon;
  • konekto: Se la datumbaza sesiopelilo estas uzata, ĉi tiu opcio specifas la datumbazan konekton por uzi;
  • tablo: Se la datumbaza sesio-ŝoforo estas uzata, ĉi tiu opcio specifas la datumbazan tabelon por uzi por stoki sesiajn datumojn;
  • loterio: Tabelo da valoroj uzataj por hazarde elekti sean ID-kuketan valoron;
  • kuketo: Ĉi tiu opcio specifas la nomon de la kuketo, kiu estos uzata por konservi la sean ID. La opcioj de vojo, domajno, sekura, http_only kaj same_site estas uzataj por agordi la kuketajn agordojn por la sesio.

Malsupre estas ekzemplo de dosiero sessions.php kun daŭro de sesio 120 sekundoj, uzo de dosieroj konservitaj en la dosierujo 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',

];

Vi ankaŭ povas agordi la sesion uzante mediovariablojn en la dosiero .env. Ekzemple, por uzi la datumbazan sean ŝoforon kaj stoki sesiajn datumojn en sesiotabelo, kun MySQL-tipo DB, vi povas agordi la sekvajn mediovariablojn:

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

Laravel-sesio-aranĝo

Estas tri manieroj labori kun seancaj datumoj en Laravel: 

  • uzante lahelper el global session;
  • uzante la Sesian fasadon;
  • tra a Request instance

En ĉiuj ĉi tiuj kazoj, la datumoj, kiujn vi stokas en la sesio, estos disponeblaj en postaj petoj faritaj de la sama uzanto ĝis la sesio eksvalidiĝos aŭ estas mane detruita.

Informilo pri novigo
Ne maltrafu la plej gravajn novaĵojn pri novigado. Registriĝi por ricevi ilin retpoŝte.

Tutmonda Sesia Helpanto

En Laravel, uzante la funkcion Global Session Helper ĝi estas oportuna maniero por aliri la sesiajn servojn provizitajn de la kadro. Ĝi permesas vin stoki kaj preni datumojn de la sesio en via aplikaĵo. Jen ekzemplo de kiel uzi la 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();

Vi ankaŭ povas pasi antaŭvalorondefinite kiel la dua argumento al la funkcio session, kiu estos resendita se la specifita ŝlosilo ne estas trovita en la sesio:

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

Kazo de Session Request

En Laravel, sesiopetokazaĵo rilatas al objekto kiu reprezentas HTTP-peton kaj enhavas informojn pri la peto, kiel ekzemple la petometodo (GET, POST, PUT, ktp.), peto URL, kaplinioj de la peto kaj la petokorpo. . Ĝi ankaŭ enhavas diversajn metodojn, kiuj povas esti uzataj por preni kaj manipuli ĉi tiujn informojn.

Kutime vi aliras la petskribon de la Session Request tra la variablo $request en Laravel-apliko. Ekzemple, sesio povas esti alirebla per peta okazo uzante la helpan funkcion 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');
    }
}

En ĉi tiu ekzemplo, la variablo  $request ĝi estas ekzemplo de la klaso Illuminate\Http\Request, kiu reprezentas la nunan HTTP-peton. La funkcio session pet instance resendas ekzemplon de la klaso Illuminate\Session\Store, kiu provizas diversajn funkciojn por labori kun la sesio.

Ercole Palmeri

Informilo pri novigo
Ne maltrafu la plej gravajn novaĵojn pri novigado. Registriĝi por ricevi ilin retpoŝte.

Lastaj artikoloj

La Estonteco Estas Ĉi tie: Kiel la ŝipindustrio revolucias la tutmondan ekonomion

La maramea sektoro estas vera tutmonda ekonomia potenco, kiu navigis al merkato de 150 miliardoj...

1 Majo 2024

Eldonistoj kaj OpenAI subskribas interkonsentojn por reguligi la fluon de informoj prilaboritaj de Artefarita Inteligenteco

Pasintlunde, la Financial Times anoncis interkonsenton kun OpenAI. FT licencas sian mondklasan ĵurnalismon...

30 aprilo 2024

Interretaj Pagoj: Jen Kiel Fluaj Servoj Faras Vin Pagi Eterne

Milionoj da homoj pagas por streaming-servoj, pagante monatajn abonkotizojn. Estas komuna opinio, ke vi...

29 aprilo 2024

Veeam havas la plej ampleksan subtenon por ransomware, de protekto ĝis respondo kaj reakiro

Coveware de Veeam daŭre liveros servojn de respondaj incidentoj pri ciberĉantaĝo. Coveware ofertos krimmedicinajn kaj solvajn kapablojn...

23 aprilo 2024