用品

Laravel 中的會話是什麼,配置和使用示例

Laravel 會話允許您存儲信息,並在 Web 應用程序的請求之間交換信息。 

它們是為當前用戶保留數據的簡單方法。 本教程將為您提供在 Laravel 中使用會話的基礎知識。

什麼是 Laravel 會話

在 Laravel 中,會話是一種存儲信息的方式,可以正確處理用戶發出的請求。 當用戶啟動 Laravel 應用程序時,會自動為該用戶啟動一個會話。 會話數據存儲在服務器上,一個帶有唯一標識符的小cookie被發送到用戶的瀏覽器以識別會話。

您可以使用會話來存儲要在多個頁面或請求中使用的數據。 例如,您可以將會話用於用戶身份驗證或存儲您希望在應用程序會話期間使用的其他信息。

Laravel 中的會話配置

要在 Laravel 中使用會話,您必須首先在文件中啟用它們 config/session.php 配置。 在此文件中,可以設置與​​會話相關的配置參數。 例如會話的持續時間、用於存儲會話數據的驅動程序以及會話數據的存儲位置。 

該文件具有以下配置選項:
  • 司機:指定會話前驅動程序defi可以使用。 Laravel 支持多種會話驅動程序:file、cookie、database、apc、memcached、redis、dynamodb 和 array;
  • 一生:指定會話必須被視為有效的分鐘數;
  • 關閉時過期:如果設置為true,當用戶瀏覽器關閉時session將過期;
  • 加密: true 表示框架將在存儲會話數據之前對其進行加密;
  • :如果使用文件會話驅動,該選項指定文件存儲位置;
  • 連接: 如果使用了數據庫會話驅動,這個選項指定要使用的數據庫連接;
  • : 如果使用了數據庫會話驅動,這個選項指定用來存儲會話數據的數據庫表;
  • 抽獎: 一個值數組,用於隨機選擇一個session ID cookie值;
  • 餅乾:此選項指定將用於存儲會話 ID 的 cookie 的名稱。 路徑、域、安全、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. 例如,使用數據庫session驅動,將session數據存儲在session表中,對於mysql類型的DB,可以設置如下環境變量:

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

Laravel 會話設置

在 Laravel 中可以通過三種方式處理會話數據: 

  • 使用helper global session;
  • 使用會話門面;
  • 通過一個 Request instance

在所有這些情況下,您存儲在會話中的數據將在同一用戶發出的後續請求中可用,直到會話過期或被手動銷毀。

創新通訊
不要錯過有關創新的最重要新聞。 註冊以通過電子郵件接收它們。

全局會話助手

在 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 中,session 請求實例指的是一個代表 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

創新通訊
不要錯過有關創新的最重要新聞。 註冊以通過電子郵件接收它們。

最近的文章

兒童著色頁的好處 - 適合所有年齡層的魔法世界

透過著色培養精細運動技能可以幫助孩子為寫作等更複雜的技能做好準備。填色…

2五月2024

未來已來:航運業如何徹底改變全球經濟

海軍部門是真正的全球經濟力量,已邁向 150 億美元的市場…

1五月2024

出版商與 OpenAI 簽署協議以規範人工智慧處理的資訊流

上週一,英國《金融時報》宣布與 OpenAI 達成協議。英國《金融時報》授予其世界級新聞報道許可…

30月2024

線上支付:串流服務如何讓您永遠付款

數百萬人為串流媒體服務付費,每月支付訂閱費用。人們普遍認為您...

29月2024