artikel

Apakah sesi dalam Laravel, konfigurasi dan gunakan dengan contoh

Sesi Laravel membolehkan anda menyimpan maklumat dan menukarnya antara permintaan dalam aplikasi web anda. 

Ia adalah cara mudah untuk mengekalkan data untuk pengguna semasa. Tutorial ini akan memberi anda asas bekerja dengan sesi dalam Laravel.

Apakah sesi Laravel

Dalam Laravel, sesi ialah cara untuk menyimpan maklumat, untuk mengendalikan permintaan yang dibuat oleh pengguna dengan betul. Apabila pengguna memulakan aplikasi Laravel, sesi dimulakan secara automatik untuk pengguna tersebut. Data sesi disimpan pada pelayan dan kuki kecil dengan pengecam unik dihantar ke penyemak imbas pengguna untuk mengenal pasti sesi.

Anda boleh menggunakan sesi untuk menyimpan data yang anda mahu gunakan merentas berbilang halaman atau permintaan. Sebagai contoh, anda mungkin menggunakan sesi untuk pengesahan pengguna atau menyimpan maklumat lain yang anda mahu gunakan semasa sesi pada aplikasi anda.

Konfigurasi sesi dalam Laravel

Untuk menggunakan sesi dalam Laravel, anda mesti mendayakan sesi dalam fail dahulu config/session.php konfigurasi. Dalam fail ini adalah mungkin untuk menetapkan parameter konfigurasi yang berkaitan dengan sesi. Contohnya tempoh sesi, pemacu untuk digunakan untuk menyimpan data sesi, dan lokasi penyimpanan untuk data sesi. 

Fail mempunyai pilihan konfigurasi berikut:
  • pemandu: Menentukan pemacu pra sesidefiSedia untuk digunakan. Laravel menyokong beberapa pemacu sesi: fail, kuki, pangkalan data, apc, memcached, redis, dynamodb dan tatasusunan;
  • seumur hidup: Menentukan bilangan minit di mana sesi mesti dianggap sah;
  • tamat tempoh_pada_tutup: Jika ditetapkan kepada benar, sesi akan tamat tempoh apabila penyemak imbas pengguna ditutup;
  • menyulitkan: true bermaksud rangka kerja akan menyulitkan data sesi sebelum ia disimpan;
  • fail: Jika pemacu sesi fail digunakan, pilihan ini menentukan lokasi storan fail;
  • sambungan: Jika pemacu sesi pangkalan data digunakan, pilihan ini menentukan sambungan pangkalan data untuk digunakan;
  • meja: Jika pemacu sesi pangkalan data digunakan, pilihan ini menentukan jadual pangkalan data untuk digunakan untuk menyimpan data sesi;
  • loteri: Tatasusunan nilai yang digunakan untuk memilih secara rawak nilai kuki ID sesi;
  • cookie: Pilihan ini menentukan nama kuki yang akan digunakan untuk menyimpan ID sesi. Pilihan laluan, domain, selamat, http_only dan same_site digunakan untuk mengkonfigurasi tetapan kuki untuk sesi.

Di bawah ialah contoh fail sessions.php dengan tempoh sesi 120 saat, penggunaan fail yang disimpan dalam direktori 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',

];

Anda juga boleh mengkonfigurasi sesi menggunakan pembolehubah persekitaran dalam fail .env. Contohnya, untuk menggunakan pemacu sesi pangkalan data dan menyimpan data sesi dalam jadual sesi, dengan DB jenis MySQL, anda boleh menetapkan pembolehubah persekitaran berikut:

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

Persediaan sesi Laravel

Terdapat tiga cara untuk bekerja dengan data sesi dalam Laravel: 

  • menggunakanhelper daripada global session;
  • menggunakan fasad Sesi;
  • melalui a Request instance

Dalam semua kes ini, data yang anda simpan dalam sesi akan tersedia dalam permintaan seterusnya yang dibuat oleh pengguna yang sama sehingga sesi tamat tempoh atau dimusnahkan secara manual.

Surat berita inovasi
Jangan terlepas berita paling penting tentang inovasi. Daftar untuk menerimanya melalui e-mel.

Pembantu Sesi Global

Dalam Laravel, menggunakan fungsi Global Session Helper ia adalah cara yang mudah untuk mengakses perkhidmatan sesi yang disediakan oleh rangka kerja. Ia membolehkan anda menyimpan dan mendapatkan semula data daripada sesi dalam aplikasi anda. Berikut adalah contoh cara menggunakan 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();

Anda juga boleh lulus nilai pradefinite sebagai hujah kedua kepada fungsi tersebut session, yang akan dikembalikan jika kunci yang ditentukan tidak ditemui dalam sesi:

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

Contoh daripada Session Request

Dalam Laravel, contoh permintaan sesi merujuk kepada objek yang mewakili permintaan HTTP dan mengandungi maklumat tentang permintaan, seperti kaedah permintaan (GET, POST, PUT, dll.), URL permintaan, pengepala permintaan dan badan permintaan . Ia juga mengandungi pelbagai kaedah yang boleh digunakan untuk mendapatkan dan memanipulasi maklumat ini.

Biasanya anda mengakses contoh Session Request melalui pembolehubah $request dalam aplikasi Laravel. Sebagai contoh, sesi boleh diakses melalui contoh permintaan menggunakan fungsi pembantu 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');
    }
}

Dalam contoh ini, pembolehubah  $request ia adalah contoh kelas Illuminate\Http\Request, yang mewakili permintaan HTTP semasa. Fungsinya session contoh permintaan mengembalikan contoh kelas Illuminate\Session\Store, yang menyediakan pelbagai fungsi untuk bekerja dengan sesi.

Ercole Palmeri

Surat berita inovasi
Jangan terlepas berita paling penting tentang inovasi. Daftar untuk menerimanya melalui e-mel.

Artikel baru-baru ini

Masa Depan Di Sini: Bagaimana Industri Perkapalan Merevolusikan Ekonomi Global

Sektor tentera laut adalah kuasa ekonomi global yang sebenar, yang telah menavigasi ke arah pasaran 150 bilion...

1 Mei 2024

Penerbit dan OpenAI menandatangani perjanjian untuk mengawal selia aliran maklumat yang diproses oleh Kepintaran Buatan

Isnin lalu, Financial Times mengumumkan perjanjian dengan OpenAI. FT melesenkan kewartawanannya bertaraf dunia…

30 April 2024

Pembayaran Dalam Talian: Begini Cara Perkhidmatan Penstriman Membuat Anda Membayar Selama-lamanya

Berjuta-juta orang membayar untuk perkhidmatan penstriman, membayar yuran langganan bulanan. Adalah menjadi pendapat umum bahawa anda…

29 April 2024

Veeam menampilkan sokongan paling komprehensif untuk perisian tebusan, daripada perlindungan kepada tindak balas dan pemulihan

Coveware oleh Veeam akan terus menyediakan perkhidmatan tindak balas insiden pemerasan siber. Coveware akan menawarkan keupayaan forensik dan pemulihan…

23 April 2024