Чланци

Шта су сесије у Ларавел-у, конфигурација и употреба са примерима

Ларавел сесије вам омогућавају да чувате информације и размењујете их између захтева у вашој веб апликацији. 

Они су једноставан начин за задржавање података за тренутног корисника. Овај водич ће вам дати основе рада са сесијама у Ларавел-у.

Шта је Ларавел сесија

У Ларавел-у, сесија је начин за чување информација, за правилно руковање захтевима корисника. Када корисник покрене Ларавел апликацију, сесија се аутоматски покреће за тог корисника. Подаци о сесији се чувају на серверу и мали колачић са јединственим идентификатором се шаље у претраживач корисника да идентификује сесију.

Можете да користите сесију за складиштење података које желите да користите на више страница или захтева. На пример, можете да користите сесију за аутентификацију корисника или да сачувате друге информације које желите да користите током сесије у вашој апликацији.

Конфигурација сесије у Ларавел-у

Да бисте користили сесије у Ларавел-у, прво их морате омогућити у датотеци config/session.php конфигурације. У овој датотеци је могуће подесити конфигурационе параметре који се односе на сесије. Као што је трајање сесије, управљачки програм који ће се користити за чување података о сесији и локација за складиштење података о сесији. 

Датотека има следеће опције конфигурације:
  • возач: Одређује драјвер пре сесијеdefiспремни за употребу. Ларавел подржава неколико драјвера сесије: фајл, колачић, база података, апц, мемцацхед, редис, динамодб и низ;
  • живот: Одређује број минута у којима се сесија мора сматрати валидном;
  • екпире_он_цлосе: Ако је постављено на тачно, сесија ће истећи када се корисник затвори претраживач;
  • шифрирање: труе значи да ће оквир шифровати податке сесије пре него што се сачувају;
  • датотеке: Ако се користи управљачки програм сесије датотека, ова опција одређује локацију за складиштење датотеке;
  • веза: Ако се користи драјвер сесије базе података, ова опција одређује везу са базом података коју треба користити;
  • табела: Ако се користи драјвер сесије базе података, ова опција одређује табелу базе података која ће се користити за чување података сесије;
  • лутрија: Низ вредности који се користи за насумични одабир вредности колачића ИД сесије;
  • колачић: Ова опција одређује име колачића који ће се користити за чување ИД-а сесије. Опције путање, домена, безбедног, хттп_онли и саме_сите се користе за конфигурисање подешавања колачића за сесију.

Испод је пример датотеке 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. На пример, да бисте користили драјвер сесије базе података и чували податке сесије у табели сесије, са МиСКЛ-тип ДБ, можете да подесите следеће променљиве окружења:

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

Подешавање Ларавел сесије

Постоје три начина рада са подацима сесије у Ларавел-у: 

  • помоћуhelper од global session;
  • користећи фасаду Сессион;
  • кроз а Request instance

У свим овим случајевима, подаци које чувате у сесији биће доступни у наредним захтевима истог корисника све док сесија не истекне или се ручно не униште.

Иновациони билтен
Не пропустите најважније вести о иновацијама. Пријавите се да их примате путем е-поште.

Глобал Сессион Хелпер

У Ларавел-у, користећи функцију 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();

Такође можете пренети пре-вредностdefiните као други аргумент функције session, који ће бити враћен ако наведени кључ није пронађен у сесији:

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

Инстанце оф Session Request

У Ларавел-у, инстанца захтева сесије се односи на објекат који представља ХТТП захтев и садржи информације о захтеву, као што је метод захтева (ГЕТ, ПОСТ, ПУТ, итд.), УРЛ захтева, заглавља захтева и тело захтева . Такође садржи различите методе које се могу користити за преузимање и манипулацију овим информацијама.

Обично приступате инстанци Session Request преко променљиве $request у Ларавел апликацији. На пример, сесији се може приступити преко инстанце захтева користећи помоћну функцију 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, који представља тренутни ХТТП захтев. Функција session рекуест инстанце враћа инстанцу класе Illuminate\Session\Store, који пружа различите функције за рад са сесијом.

Ercole Palmeri

Иновациони билтен
Не пропустите најважније вести о иновацијама. Пријавите се да их примате путем е-поште.

Недавни чланци

Предности бојанка за децу - свет магије за све узрасте

Развијање финих моторичких вештина кроз бојење припрема децу за сложеније вештине попут писања. Боји…

КСНУМКС Мај КСНУМКС

Будућност је ту: Како бродарска индустрија револуционише глобалну економију

Поморски сектор је права глобална економска сила, која је кренула ка тржишту од 150 милијарди...

КСНУМКС Мај КСНУМКС

Издавачи и ОпенАИ потписују уговоре за регулисање протока информација које обрађује вештачка интелигенција

Прошлог понедељка, Финанциал Тимес је објавио договор са ОпенАИ. ФТ лиценцира своје новинарство светске класе…

КСНУМКС април КСНУМКС

Онлине плаћања: Ево како вас услуге стримовања чине да плаћате заувек

Милиони људи плаћају услуге стриминга, плаћајући месечне претплате. Увријежено је мишљење да сте…

КСНУМКС април КСНУМКС

Прочитајте Иновације на свом језику

Иновациони билтен
Не пропустите најважније вести о иновацијама. Пријавите се да их примате путем е-поште.

Пратите нас