Session trong Laravel 8

Thực tế Session trong Laravel 8 không khác gì trong các phiên bản Laravel trước bởi vậy bài này chúng ta sẽ không nhắc lại quá nhiều mà chỉ nhắc lại vài cú pháp cơ bản.

I. Cấu hình (Configuration) Laravel 8

Mặc định thì Laravel 8 sử dụng driver file config/session.php để lưu cấu hình session, nhưng trong thực tế với các ứng dụng lớn thường hay sử dụng các package như redis hay memcached để tối ưu hiệu năng. 

Laravel 8 hỗ trợ các session driver như sau:

  • file - session sẽ được lưu trữ lại storage/framework/sessions (ban có thể thay đổi thư mục lưu session nếu muốn).
  • cookie - sessions sẽ được lưu trữ vào cookie và sẽ được mã hóa an toàn trước khi lưu vào cookie.
  • database - sessions sẽ được lưu trữ vào database.
  • memcached / redis - session sẽ được lưu trữ vào trong bộ nhỡ cache của các ứng dụng này.
  • dynamodb - session sẽ được lưu trữ vào trong  AWS DynamoDB.
  • array - session sẽ được lưu trữ vào một array trong PHP. Driver này chỉ nên dùng cho testing.

Để chọn driver session cho ứng dụng, bạn chỉ cần thay đổi tại file .env

SESSION_DRIVER=file

II. Sử dụng session (Using the session)

1. Lưu trữ dữ liệu (Storing data)

Để lưu trữ một session, bạn có thể cân nhắc lựa chọn method put từ object Illuminate\Http\Request hoặc sử dụng global helper session.

Với method put từ object Illuminate\Http\Request:

$request->session()->put('key', 'value');

Với global helper session:

session(['key' => 'value']);

Chúng ta có thể push một item session vào mảng của nó bằng cách sử dụng dấu . để tham chiếu. trong method push:

$request->session()->push('user.username', 'phamnhan');

hoặc thông qua global helper session:

session(['user.username' => 'phamnhan']);

2. Lấy dữ liệu (Retrieving data)

a. Lấy tất cả dữ liệu session (Retrieving all session data)

Với lớp Illuminate\Http\Request cho phép chúng ta lấy toàn bộ session được lưu trữ thông qua method all.

$request->session()->all();

b. Lấy và xóa một mục (Retrieving and deleting an item)

Một số session sau khi lấy xong thì không cần dùng đến nữa, có một method thực hiện chuỗi công việc này. Method pull sau khi trả về giá trị của session thì sẽ xóa nó đi.

$value = $request->session()->pull('key', 'default');

3. Khởi tạo lại session ID (Regenerating the session ID)

Larravel 8 sẽ tự động tạo lại session ID nếu ứng dụng của bạn sử dụng LoginController mặc định. Nếu như bạn cần tạo lại session ID thủ công, bạn có thể sự dụng method regenerate.

$request->session()->regenerate();

III. Lời kết:

Trong bài viết này mình chỉ nhắc lại vài khái niệm session trong Laravel 8 mà thôi, để tìm hiểu chi tiết hơn mời các bạn theo dõi lại bài viết cũ của mình Session Laravel . Chúc các bạn học tốt!

Bình luận