Cách đặt thời gian hết hạn trong Laravel

Laravel Sanctum cung cấp một hệ thống xác thực dựa trên mã thông báo đơn giản phù hợp với mọi SPA, tích hợp ứng dụng di động và API. Sanctum cho phép mỗi người dùng ứng dụng của bạn tạo nhiều mã thông báo API cho tài khoản của họ. Các mã thông báo này có thể được cấp khả năng/phạm vi chỉ định hành động nào mà mã thông báo được phép thực hiện

Phiên là một cách để lưu trữ thông tin (ở dạng biến) được sử dụng trên nhiều Yêu cầu HTTP, để mô phỏng “trạng thái” trên các trang điều hướng

Laravel cung cấp nhiều trình quản lý phụ trợ phiên được truy cập thông qua API thống nhất, rõ ràng. Hỗ trợ cho các chương trình phụ trợ phổ biến như Memcached, Redis và cơ sở dữ liệu được bao gồm

Về thời gian chờ của phiên, bạn có thể tăng thời gian tồn tại của phiên trong Laravel bằng cách thực hiện một số điều chỉnh trong tệp session.php

Bạn cũng có thể đọc Cách thay đổi thời gian chờ của phiên PHP

Bạn có thể dễ dàng tăng thời lượng phiên trong phiên bản Laravel 5, Laravel 6, Laravel 7, Laravel 8 và Laravel 9

Một phiên làm việc trong Laravel kéo dài bao lâu

Theo mặc định, nó được đặt thành 120 phút (2 giờ). Nếu bạn nhận xét hoặc xóa cài đặt phiên Laravel, phiên của bạn có thể hoạt động bình thường bằng cách sử dụng phiên được định cấu hình trong php config values

Thời gian chờ phiên hợp lý là gì

Một phiên không nên kéo dài hơn 30 phút. Bạn có thể đọc bài viết này để hiểu rõ hơn tại sao. Cách thay đổi thời gian chờ của phiên PHP

Đặt thời gian tồn tại của phiên Laravel

Tệp cấu hình phiên ứng dụng của bạn được lưu trữ tại config/session.php. Hãy chắc chắn xem xét các tùy chọn có sẵn trong tập tin này

Theo mặc định, Laravel được cấu hình để sử dụng trình điều khiển phiên tệp, trình điều khiển này sẽ hoạt động tốt cho nhiều ứng dụng. Nếu ứng dụng của bạn sẽ được cân bằng tải trên nhiều máy chủ web, thì bạn nên chọn một kho lưu trữ tập trung mà tất cả các máy chủ đều có thể truy cập, chẳng hạn như Redis hoặc cơ sở dữ liệu quan hệ

Tùy chọn cấu hình trình điều khiển phiên xác định nơi dữ liệu phiên sẽ được lưu trữ cho mỗi yêu cầu. Laravel xuất xưởng với một số trình điều khiển tuyệt vời

  • tệp - phiên được lưu trữ trong bộ lưu trữ/khung/phiên
  • cookie - phiên được lưu trữ trong cookie được mã hóa, an toàn
  • cơ sở dữ liệu - phiên được lưu trữ trong cơ sở dữ liệu quan hệ
  • memcached/redis - các phiên được lưu trữ trong một trong những cửa hàng dựa trên bộ nhớ cache nhanh này
  • dynamodb - phiên được lưu trữ trong AWS DynamoDB
  • mảng - các phiên được lưu trữ trong một mảng PHP và sẽ không được duy trì

Cài đặt phiên trọn đời sẽ được thực hiện theo cách tương tự mặc dù trình điều khiển phiên được định cấu hình

Nếu bạn muốn tăng hoặc giảm thời lượng phiên của mình thì bạn có thể dễ dàng thực hiện điều đó từ tệp cấu hình trong Laravel. Trong tệp config/session.php có tùy chọn phím lifetime để cài đặt thời gian tính bằng phút. Trong tệp cấu hình phiên, cũng có một số tùy chọn để đặt trình điều khiển, thời gian chờ, expire_on_close và mã hóa, v.v.

Cấu hình thời gian tồn tại của phiên cũng có thể được thực hiện bằng cách sử dụng tệp .env

SESSION_LIFETIME = 30

Còn về việc thiết lập thời gian tồn tại mãi mãi cho các phiên thì sao?

Vì vậy, nếu bạn muốn đặt thời gian 1 năm cho phiên hết hạn, bạn có thể tính số phút đại diện cho 1 năm, sau đó đặt giá trị này trong ____20_______ hoặc định cấu hình trực tiếp trong tệp ____17_______ bằng công thức

60 * 24 * 365 = 525600 // 1 year

Trong tệp .env

SESSION_LIFETIME = 525600

Trong tệp config/session.php

php
  
use Illuminate\Support\Str;
  
return [
  
    .....
  
    'lifetime' => 1 * (60 * 24 * 365),
  
    .....
  
]

Phần kết luận

Thời gian tồn tại của phiên phù hợp cho các ứng dụng Laravel giúp nhà phát triển kiểm soát nhiều hơn về số lượng phiên sẽ kéo dài và cải thiện tính bảo mật của ứng dụng

Tạo các URL đã ký trong Laravel cũng đơn giản như tạo các route thông thường, ngoại trừ một vài điểm khác biệt chính. Để Laravel xác nhận rằng các URL này không bị thay đổi kể từ khi chúng được tạo, một hàm băm chữ ký được đính kèm với chuỗi truy vấn của URL. Hãy xem cách chúng tôi có thể tạo một URL đã ký và đặt thời gian hết hạn

Để tạo một tuyến đường đã ký, chúng tôi phải sử dụng mặt tiền URL. Bây giờ chúng ta có thể sử dụng signedRoute() hoặc temporarySignedRoute(). Trong trường hợp của chúng tôi, chúng tôi muốn tuyến đường hết hạn sau một khoảng thời gian nhất định, vì vậy chúng tôi sẽ sử dụng tùy chọn thứ hai. Phương thức temporarySignedRoute() chấp nhận hai đối số. Cái đầu tiên sẽ là tên tuyến đường tham chiếu đến tuyến đường đã tồn tại. Đối số thứ hai mà chúng ta phải chuyển vào phương thức temporarySignedRoute() sẽ là thời gian hết hạn. Hãy xem nó trông như thế nào trong mã

Chẳng hạn, bạn có thể triển khai liên kết "hủy đăng ký" công khai được gửi tới người đăng ký của mình bằng các URL đã ký. Sử dụng phương thức signedRoute() của mặt tiền URL để tạo URL đã ký cho một tuyến đường đã chỉ định

1use Illuminate\Support\Facades\URL;

3return URL::signedRoute('unsubscribe', ['user' => 1]);

Đoạn mã trên sẽ trả về một chuỗi như thế này.

1use Illuminate\Support\Facades\URL;

3return URL::temporarySignedRoute(

4 'unsubscribe', now()->addMinutes(30), ['user' => 1]

2

Điều này thật tuyệt nhưng điều chúng tôi thực sự muốn là có dấu thời gian hết hạn được mã hóa thành URL đã ký để khi Laravel xác thực tuyến đường, nó sẽ đảm bảo rằng dấu thời gian hết hạn chưa trôi qua. Được rồi. Để đạt được điều đó, chúng tôi sẽ sử dụng phương pháp temporarySignedRoute()

1use Illuminate\Support\Facades\URL;

3return URL::temporarySignedRoute(

4 'unsubscribe', now()->addMinutes(30), ['user' => 1]

Bây giờ chúng tôi đã có URL đã ký sẵn sàng để sử dụng, chúng tôi cần xác thực các yêu cầu đến và để làm điều đó, chúng tôi có hai tùy chọn

1 - Với phần mềm trung gian

Laravel cung cấp một phần mềm trung gian

1use Illuminate\Support\Facades\URL;

3return URL::temporarySignedRoute(

4 'unsubscribe', now()->addMinutes(30), ['user' => 1]

4 mà chúng ta có thể sử dụng. Trước tiên, chúng tôi phải đảm bảo rằng chúng tôi đã bao gồm phần mềm trung gian trong App\Http\Kernel

________số 8_______

Bây giờ chúng ta có thể sử dụng nó bên trong tệp định tuyến của mình như vậy

1Route::post('unsubscribe/{user}', UnsubscribeUser::class)

2 - Sử dụng phương thức 1use Illuminate\Support\Facades\URL;3return URL::temporarySignedRoute( (adsbygoogle = window.adsbygoogle || []).push({}); 4 'unsubscribe', now()->addMinutes(30), ['user' => 1]5 trên đối tượng yêu cầu

1use Illuminate\Http\Request;

3public function __invoke(Request $request)

5 if (! $request->hasValidSignature()) {

Hoặc chúng tôi có thể chuyển một cuộc gọi lại đến tuyến đường của mình để kiểm tra yêu cầu đến có chữ ký hợp lệ

1use Illuminate\Http\Request;

3Route::get('/unsubscribe/{user}', function (Request $request) {

4 if (! $request->hasValidSignature()) {

9})->name('unsubscribe');

3 - Xử lý các route đã được sign không hợp lệ

Khi ai đó truy cập một URL đã ký nhưng đã hết hạn, họ sẽ nhận được một trang lỗi chung cho mã trạng thái HTTP 

1use Illuminate\Support\Facades\URL;

3return URL::temporarySignedRoute(

4 'unsubscribe', now()->addMinutes(30), ['user' => 1]

6. Bây giờ chúng ta có thể thay đổi/tùy chỉnh điều đó bằng cách xác định bao đóng "có thể kết xuất" tùy chỉnh cho ngoại lệ

1use Illuminate\Support\Facades\URL;

3return URL::temporarySignedRoute(

4 'unsubscribe', now()->addMinutes(30), ['user' => 1]

7 trong trình xử lý ngoại lệ

Làm cách nào để đặt thời gian hết hạn phiên trong laravel 8?

env và rất dễ thay đổi nó từ tệp cấu hình trong laravel. laravel cung cấp cho bạn session. tệp php ở đó, chúng ta có thể thấy tùy chọn khóa 'lifetime' để đặt thời gian tính bằng phút . Trong tệp cấu hình phiên, cũng có một số tùy chọn để đặt hết hạn_on_đóng, mã hóa, hết thời gian chờ và trình điều khiển, v.v.

Làm cách nào để đặt thời gian tồn tại của phiên trong laravel?

Nếu bạn muốn tăng hoặc giảm thời lượng phiên của mình thì bạn có thể dễ dàng thực hiện điều đó từ tệp cấu hình trong Laravel. Trong cấu hình/phiên. tệp php có tùy chọn khóa trọn đời để đặt thời gian tính bằng phút .

Làm cách nào để kiểm tra thời gian chờ của phiên trong laravel?

Laravel triển khai thời gian chờ của phiên. .
Thêm cột last_seen_at vào Mô hình người dùng php artisan make. di chuyển add_last_seen_to_users_table --table=users. .
Cập nhật cơ sở dữ liệu php artisan di chuyển. Làm tươi
Tạo phần mềm trung gian hết thời gian chờ phiên php artisan make. phần mềm trung gian SessionTimeout. .
Đăng ký phần mềm trung gian để bảo vệ web

Làm cách nào để đặt mảng trong phiên trong laravel?

Nếu bạn cần sử dụng mảng từ phiên làm chuỗi, bạn cần sử dụng Bộ sưu tập như thế này. $product = coll([1,2,3,4]); . push('cart', $product); Điều này sẽ làm cho nó hoạt động khi bạn sử dụng {{Session. get('cart');}} trong html của bạn.