Rumah  >  Artikel  >  rangka kerja php  >  Apakah tanggungjawab middleware laravel

Apakah tanggungjawab middleware laravel

PHPz
PHPzasal
2023-04-19 10:08:17656semak imbas

Laravel ialah rangka kerja sumber terbuka PHP popular yang biasa digunakan untuk membangunkan aplikasi web. Ia menyediakan pelbagai alat dan ciri untuk membina aplikasi berskala berkualiti tinggi dengan mudah. Antaranya, middleware adalah bahagian penting dalam Laravel dan memainkan peranan yang sangat penting dalam aplikasi.

Artikel ini akan memperkenalkan konsep asas, fungsi dan prinsip pelaksanaan perisian tengah Laravel untuk membantu pembaca memahami dengan lebih baik peranan dan penggunaan perisian tengah.

Apakah perisian tengah?

Perisian tengah ialah mekanisme dalam Laravel untuk mengendalikan permintaan dan respons HTTP Ia menyediakan cara yang fleksibel untuk mengendalikan banyak tugas biasa dalam aplikasi, seperti pengesahan, penapisan data, Pengurusan sesi dll. Middleware biasanya terletak di tengah-tengah proses pemprosesan permintaan dan boleh menapis serta mengubah suai permintaan dan respons.

Dalam Laravel, middleware boleh digunakan dalam dua senario: middleware global dan middleware penghalaan. Perisian tengah global diproses sebelum semua permintaan HTTP, manakala perisian penghalaan hanya memproses permintaan untuk laluan tertentu. Middleware boleh menjadi fungsi penutupan, kelas atau contoh kelas yang melaksanakan kaedah handle.

Peranan middleware

  1. Keizinan dan pengesahan

Middleware boleh digunakan untuk mengesahkan identiti pengguna dan menyemak sama ada pengguna Mempunyai hak untuk mengakses sumber tertentu atau menghalang pengguna daripada melakukan operasi yang menyalahi undang-undang. Contohnya, apabila pengguna cuba mengakses bahagian belakang pengurusan atau mencari data sensitif, mereka boleh mengesahkan diri mereka sendiri dengan menulis perisian tengah yang sepadan.

  1. Log

Perisian tengah juga boleh digunakan untuk merekodkan gelagat pengguna dan operasi sistem. Sebagai contoh, anda boleh menulis perisian tengah yang merekodkan masa yang diluangkan oleh pengguna pada halaman tertentu, atau merekodkan masa dan status semua permintaan dan respons. Ini membantu pembangun lebih memahami cara sistem berjalan dan mengoptimumkan prestasi aplikasi.

  1. Mampatan dan caching

Perisian tengah juga boleh digunakan untuk memampatkan dan cache data tindak balas untuk mempercepatkan akses pengguna. Contohnya, anda boleh menggunakan middleware untuk memampatkan semua data tindak balas untuk mengurangkan masa penghantaran dan penggunaan lebar jalur, atau menggunakan middleware untuk cache beberapa data statik untuk mengurangkan bilangan pertanyaan pangkalan data.

  1. Penukaran data

Perisian tengah boleh digunakan untuk menukar data dalam pelbagai format (seperti XML, JSON, CSV, dll.) kepada format data bersatu. Sebagai contoh, anda boleh menulis perisian tengah untuk menukar semua data respons ke dalam format JSON untuk memudahkan penghuraian dan pemprosesan klien.

Pelaksanaan middleware

Dalam Laravel, anda boleh mencipta middleware anda sendiri dengan mewarisi kelas IlluminateHttpMiddlewareMiddleware. Middleware biasanya mengandungi kaedah handle untuk mengendalikan permintaan dan respons.

Berikut ialah contoh middleware mudah untuk menyemak sama ada pengguna mempunyai kebenaran untuk mengakses halaman tertentu:

<?php
  
namespace App\Http\Middleware;
  
use Closure;
  
class CheckUserPermission
{
    public function handle($request, Closure $next)
    {
        if (! $request->user()->hasPermissionTo('access-admin')) {
            return redirect('/login');
        }
  
        return $next($request);
    }
}

Dalam contoh di atas, kaedah handle menerima parameter $request dan parameter Closure jenis $next untuk menghantar permintaan kepada perisian tengah atau pengawal seterusnya.

Seterusnya, middleware boleh didaftarkan ke dalam aplikasi. Perisian tengah global boleh ditambah melalui atribut app/Http/Kernel.php bagi fail $middleware dan perisian tengah penghalaan boleh ditambah melalui atribut $routeMiddleware.

Berikut ialah contoh mudah untuk mendaftarkan middleware di atas:

<?php

namespace App\Http;
  
use Illuminate\Foundation\Http\Kernel as HttpKernel;
  
class Kernel extends HttpKernel
{
    protected $routeMiddleware = [
        &#39;auth&#39; => \App\Http\Middleware\Authenticate::class,
        'permission' => \App\Http\Middleware\CheckUserPermission::class,
    ];
}

Dalam contoh di atas, middleware CheckUserPermission didaftarkan sebagai penghalaan middleware permission.

Perisian tengah boleh digunakan pada laluan dengan menggunakan namanya dalam pengisytiharan laluan. Contoh berikut menunjukkan cara menggunakan perisian tengah untuk mengehadkan permintaan kepada laluan /admin kepada pengguna dengan hak pentadbir:

Route::get('/admin', function () {
    //
})->middleware('permission:access-admin');

Dalam contoh di atas, perisian tengah laluan permission digunakan pada laluan /admin , dan lulus parameter access-admin untuk menunjukkan bahawa pengguna perlu mempunyai access-admin kebenaran untuk mengakses laluan.

Ringkasan

Middleware ialah mekanisme berkuasa dalam program Laravel yang boleh melakukan penapisan data, pengesahan, pengelogan, caching, dll. semasa pemprosesan permintaan. Ia merangkumi aliran pemprosesan dengan cara yang boleh diperluaskan dan menyediakan penggunaan yang mudah dan fleksibel.

Artikel ini memperkenalkan konsep asas, senario aplikasi dan kaedah pelaksanaan perisian tengah Laravel saya harap ia akan membantu pembaca memahami prinsip di sebalik perisian tengah dan cara menggunakannya. Dalam pembangunan sebenar, anda boleh menulis perisian tengah anda sendiri mengikut keperluan khusus untuk meningkatkan kebolehpercayaan, skalabiliti dan kebolehselenggaraan aplikasi.

Atas ialah kandungan terperinci Apakah tanggungjawab middleware laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn