Các bài viết

Phiên trong Laravel là gì, cấu hình và sử dụng với các ví dụ

Phiên Laravel cho phép bạn lưu trữ thông tin và trao đổi thông tin đó giữa các yêu cầu trong ứng dụng web của bạn. 

Chúng là một cách dễ dàng để duy trì dữ liệu cho người dùng hiện tại. Hướng dẫn này sẽ cung cấp cho bạn kiến ​​thức cơ bản về cách làm việc với các phiên trong Laravel.

Phiên Laravel là gì

Trong Laravel, session là một cách để lưu trữ thông tin, để xử lý chính xác các yêu cầu của người dùng. Khi người dùng khởi động ứng dụng Laravel, phiên sẽ tự động bắt đầu cho người dùng đó. Dữ liệu phiên được lưu trữ trên máy chủ và một cookie nhỏ có số nhận dạng duy nhất được gửi đến trình duyệt của người dùng để xác định phiên.

Bạn có thể sử dụng phiên để lưu trữ dữ liệu mà bạn muốn sử dụng trên nhiều trang hoặc yêu cầu. Ví dụ: bạn có thể sử dụng phiên để xác thực người dùng hoặc lưu trữ thông tin khác mà bạn muốn sử dụng trong phiên trên ứng dụng của mình.

Cấu hình phiên trong Laravel

Để sử dụng các phiên trong Laravel, trước tiên bạn phải kích hoạt chúng trong tệp config/session.php của cấu hình. Trong tệp này, có thể đặt các tham số cấu hình liên quan đến phiên. Chẳng hạn như thời lượng của phiên, trình điều khiển sẽ sử dụng để lưu trữ dữ liệu phiên và vị trí lưu trữ dữ liệu phiên. 

Tệp có các tùy chọn cấu hình sau:
  • trình điều khiển: Chỉ định trình điều khiển phiên trướcdefisẵn sàng sử dụng. Laravel hỗ trợ một số trình điều khiển phiên: tệp, cookie, cơ sở dữ liệu, apc, memcached, redis, dynamodb và mảng;
  • đời: Chỉ định số phút mà phiên phải được coi là hợp lệ;
  • hết hạn_on_đóng: Nếu được đặt thành true, phiên sẽ hết hạn khi đóng trình duyệt của người dùng;
  • mã hóa: true có nghĩa là framework sẽ mã hóa dữ liệu phiên trước khi nó được lưu trữ;
  • các tập tin: Nếu trình điều khiển phiên tệp được sử dụng, tùy chọn này chỉ định vị trí lưu trữ tệp;
  • liên quan: Nếu trình điều khiển phiên cơ sở dữ liệu được sử dụng, tùy chọn này chỉ định kết nối cơ sở dữ liệu sẽ sử dụng;
  • bàn: Nếu trình điều khiển phiên cơ sở dữ liệu được sử dụng, tùy chọn này chỉ định bảng cơ sở dữ liệu sẽ sử dụng để lưu trữ dữ liệu phiên;
  • xổ số: Một mảng các giá trị được sử dụng để chọn ngẫu nhiên một giá trị cookie ID phiên;
  • Cookie: Tùy chọn này chỉ định tên của cookie sẽ được sử dụng để lưu trữ ID phiên. Các tùy chọn đường dẫn, tên miền, bảo mật, http_only và same_site được sử dụng để định cấu hình cài đặt cookie cho phiên.

Dưới đây là một ví dụ về một tập tin sessions.php với thời lượng phiên 120 giây, sử dụng các tệp được lưu trữ trong thư mục 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',

];

Bạn cũng có thể định cấu hình phiên bằng các biến môi trường trong tệp .env. Ví dụ: để sử dụng trình điều khiển phiên cơ sở dữ liệu và lưu trữ dữ liệu phiên trong bảng phiên, với DB kiểu MySQL, bạn có thể đặt các biến môi trường sau:

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

Thiết lập phiên Laravel

Có ba cách để làm việc với dữ liệu phiên trong Laravel: 

  • sử dụnghelper của global session;
  • sử dụng mặt tiền Phiên;
  • qua một Request instance

Trong tất cả các trường hợp này, dữ liệu bạn lưu trữ trong phiên sẽ có sẵn trong các yêu cầu tiếp theo được thực hiện bởi cùng một người dùng cho đến khi phiên hết hạn hoặc bị hủy theo cách thủ công.

Bản tin đổi mới
Đừng bỏ lỡ những tin tức quan trọng nhất về đổi mới. Đăng ký để nhận chúng qua email.

Trình trợ giúp phiên toàn cầu

Trong Laravel, sử dụng chức năng Global Session Helper đó là một cách thuận tiện để truy cập các dịch vụ phiên do khung cung cấp. Nó cho phép bạn lưu trữ và truy xuất dữ liệu từ phiên trong ứng dụng của bạn. Đây là một ví dụ về cách sử dụng 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();

Bạn cũng có thể chuyển một giá trị trướcdefinite làm đối số thứ hai cho hàm session, sẽ được trả về nếu không tìm thấy khóa đã chỉ định trong phiên:

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

trường hợp của Session Request

Trong Laravel, một phiên bản yêu cầu phiên đề cập đến một đối tượng đại diện cho một yêu cầu HTTP và chứa thông tin về yêu cầu, chẳng hạn như phương thức yêu cầu (GET, POST, PUT, v.v.), URL yêu cầu, tiêu đề của yêu cầu và nội dung yêu cầu . Nó cũng chứa các phương pháp khác nhau có thể được sử dụng để truy xuất và thao tác thông tin này.

Thông thường, bạn truy cập phiên bản của Session Request thông qua biến $request trong một ứng dụng Laravel. Ví dụ: một phiên có thể được truy cập thông qua một phiên bản yêu cầu bằng cách sử dụng hàm trợ giúp 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');
    }
}

Trong ví dụ này, biến  $request nó là một thể hiện của lớp Illuminate\Http\Request, đại diện cho yêu cầu HTTP hiện tại. Chức năng session thể hiện yêu cầu trả về một thể hiện của lớp Illuminate\Session\Store, cung cấp các chức năng khác nhau để làm việc với phiên.

Ercole Palmeri

Bản tin đổi mới
Đừng bỏ lỡ những tin tức quan trọng nhất về đổi mới. Đăng ký để nhận chúng qua email.

Bài viết gần đây

Sự can thiệp sáng tạo vào thực tế tăng cường, với người xem Apple tại Phòng khám đa khoa Catania

Một ca phẫu thuật tạo hình mắt bằng cách sử dụng trình xem thương mại Apple Vision Pro đã được thực hiện tại Phòng khám đa khoa Catania…

3 May 2024

Lợi ích của việc tô màu cho trẻ em - thế giới kỳ diệu dành cho mọi lứa tuổi

Phát triển kỹ năng vận động tinh thông qua tô màu giúp trẻ chuẩn bị cho những kỹ năng phức tạp hơn như viết. Để tô màu…

2 May 2024

Tương lai là đây: Ngành vận tải biển đang cách mạng hóa nền kinh tế toàn cầu như thế nào

Ngành hải quân là một cường quốc kinh tế toàn cầu thực sự, đang hướng tới thị trường 150 tỷ...

1 May 2024

Các nhà xuất bản và OpenAI ký thỏa thuận điều chỉnh luồng thông tin được Trí tuệ nhân tạo xử lý

Thứ Hai tuần trước, Financial Times đã công bố một thỏa thuận với OpenAI. FT cấp phép cho hoạt động báo chí đẳng cấp thế giới…

30 tháng tư 2024

Đọc Đổi mới bằng ngôn ngữ của bạn

Bản tin đổi mới
Đừng bỏ lỡ những tin tức quan trọng nhất về đổi mới. Đăng ký để nhận chúng qua email.

Theo chúng tôi