Артыкулы

Што такое сеансы ў Laravel, канфігурацыя і выкарыстанне з прыкладамі

Сеансы Laravel дазваляюць захоўваць інфармацыю і абменьвацца ёю паміж запытамі ў вашым вэб-прыкладанні. 

Гэта просты спосаб захавання дадзеных для бягучага карыстальніка. Гэты падручнік дасць вам асновы працы з сесіямі ў Laravel.

Што такое сесія Laravel

У Laravel сеанс - гэта спосаб захоўвання інфармацыі, каб правільна апрацоўваць запыты, зробленыя карыстальнікам. Калі карыстальнік запускае прыкладанне Laravel, для гэтага карыстальніка аўтаматычна запускаецца сеанс. Даныя аб сеансе захоўваюцца на серверы, а невялікі файл cookie з унікальным ідэнтыфікатарам адпраўляецца ў браўзер карыстальніка для ідэнтыфікацыі сеанса.

Вы можаце выкарыстоўваць сеанс для захоўвання дадзеных, якія вы хочаце выкарыстоўваць на некалькіх старонках або запытах. Напрыклад, вы можаце выкарыстоўваць сеанс для аўтэнтыфікацыі карыстальніка або захоўваць у сваім дадатку іншую інфармацыю, якую хочаце выкарыстоўваць падчас сеансу.

Канфігурацыя сесіі ў Laravel

Каб выкарыстоўваць сеансы ў Laravel, вы павінны спачатку ўключыць іх у файле config/session.php канфігурацыі. У гэтым файле можна задаць параметры канфігурацыі, звязаныя з сесіямі. Напрыклад, працягласць сеанса, драйвер, які будзе выкарыстоўвацца для захавання даных сеанса, і месца захавання даных сеанса. 

Файл мае наступныя параметры канфігурацыі:
  • кіроўца: вызначае драйвер перад сесіяйdefiгатовы да выкарыстання. Laravel падтрымлівае некалькі сеансавых драйвераў: файл, кукі, база дадзеных, apc, memcached, redis, dynamodb і масіў;
  • тэрмін: вызначае колькасць хвілін, на працягу якіх сеанс павінен лічыцца сапраўдным;
  • заканчэнне_пры_закрыцці: Калі ўсталявана значэнне true, сеанс скончыцца, калі браўзер карыстальніка будзе зачынены;
  • шыфраваць: праўда азначае, што фрэймворк будзе шыфраваць даныя сеанса перад іх захаваннем;
  • файлы: Калі выкарыстоўваецца драйвер сеансу файла, гэтая опцыя вызначае месца захавання файла;
  • сувязі: Калі выкарыстоўваецца драйвер сеансу базы дадзеных, гэтая опцыя вызначае злучэнне з базай дадзеных для выкарыстання;
  • стол: Калі выкарыстоўваецца драйвер сеансу базы дадзеных, гэтая опцыя вызначае табліцу базы дадзеных, якая будзе выкарыстоўвацца для захоўвання дадзеных сеансу;
  • латарэя: масіў значэнняў, які выкарыстоўваецца для выпадковага выбару значэння cookie ID сеансу;
  • печыва: Гэты параметр вызначае назву файла cookie, які будзе выкарыстоўвацца для захавання ідэнтыфікатара сеансу. Параметры path, domain, secure, http_only і same_site выкарыстоўваюцца для канфігурацыі параметраў cookie для сеанса.

Ніжэй прыведзены прыклад файла sessions.php з працягласцю сеансу 120 секунд, выкарыстанне файлаў, якія захоўваюцца ў каталогу 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',

];

Вы таксама можаце наладзіць сеанс з дапамогай зменных асяроддзя ў файле .env. Напрыклад, каб выкарыстоўваць драйвер сеансу базы дадзеных і захоўваць дадзеныя сеансу ў табліцы сеансаў, з БД тыпу MySQL, вы можаце ўсталяваць наступныя зменныя асяроддзя:

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

Настройка сесіі Laravel

Ёсць тры спосабы працы з дадзенымі сесіі ў Laravel: 

  • выкарыстоўваючыhelper з global session;
  • з дапамогай фасада Session;
  • праз а Request instance

Ва ўсіх гэтых выпадках даныя, якія вы захоўваеце ў сеансе, будуць даступныя ў наступных запытах, зробленых тым жа карыстальнікам, пакуль сеанс не скончыцца або не будзе знішчаны ўручную.

Інавацыйны бюлетэнь
Не прапусціце самыя важныя навіны пра інавацыі. Падпішыцеся, каб атрымліваць іх па электроннай пошце.

Global Session Helper

У Laravel, выкарыстоўваючы функцыю Global Session Helper гэта зручны спосаб атрымаць доступ да сеансавых службаў, якія прадстаўляюцца фрэймворкам. Гэта дазваляе захоўваць і атрымліваць даныя сеанса ў вашым дадатку. Вось прыклад таго, як выкарыстоўваць 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();

Вы таксама можаце перадаць папярэдняе значэннеdefinite як другі аргумент функцыі session, які будзе вернуты, калі ўказаны ключ не знойдзены ў сеансе:

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

Асобнік Session Request

У Laravel асобнік запыту сесіі адносіцца да аб'екта, які прадстаўляе запыт HTTP і змяшчае інфармацыю аб запыце, такую ​​як метад запыту (GET, POST, PUT і г.д.), URL запыту, загалоўкі запыту і цела запыту . Ён таксама змяшчае розныя метады, якія можна выкарыстоўваць для атрымання і маніпулявання гэтай інфармацыяй.

Звычайна вы атрымліваеце доступ да асобніка Session Request праз зменную $request у дадатку Laravel. Напрыклад, да сеансу можна атрымаць доступ праз асобнік запыту з дапамогай дапаможнай функцыі 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');
    }
}

У гэтым прыкладзе зменная  $request гэта асобнік класа Illuminate\Http\Request, які прадстаўляе бягучы запыт HTTP. Функцыя session экзэмпляр запыту вяртае асобнік класа Illuminate\Session\Store, які забяспечвае розныя функцыі для працы з сесіяй.

Ercole Palmeri

Інавацыйны бюлетэнь
Не прапусціце самыя важныя навіны пра інавацыі. Падпішыцеся, каб атрымліваць іх па электроннай пошце.

Апошнія артыкулы

Будучыня тут: як індустрыя суднаходства рэвалюцыянізуе сусветную эканоміку

Ваенна-марскі сектар - гэта сапраўдная глабальная эканамічная сіла, якая перайшла да 150-мільярднага рынку...

1 мая 2024

Выдаўцы і OpenAI падпісваюць пагадненні аб рэгуляванні патоку інфармацыі, апрацаванай штучным інтэлектам

У мінулы панядзелак Financial Times абвясціла аб здзелцы з OpenAI. FT ліцэнзуе сваю журналістыку сусветнага ўзроўню...

Красавік 30 2024

Інтэрнэт-плацяжы: вось як паслугі струменевай перадачы прымушаюць вас плаціць вечна

Мільёны людзей плацяць за струменевыя паслугі, плацячы штомесячную абаненцкую плату. Распаўсюджана меркаванне, што вы…

Красавік 29 2024

Veeam прапануе самую поўную падтрымку праграм-вымагальнікаў - ад абароны да адказу і аднаўлення

Coveware ад Veeam працягне прадастаўляць паслугі рэагавання на інцыдэнты кібервымагальніцтва. Coveware будзе прапаноўваць судова-медыцынскую экспертызу і магчымасці выпраўлення…

Красавік 23 2024

Чытайце Innovation на сваёй мове

Інавацыйны бюлетэнь
Не прапусціце самыя важныя навіны пра інавацыі. Падпішыцеся, каб атрымліваць іх па электроннай пошце.

Выконвайце за намі