Cara menggunakan middleware untuk pengesahan API dalam Laravel
Middleware memainkan peranan yang sangat penting dalam rangka kerja Laravel Ia boleh digunakan untuk melaksanakan beberapa logik kod sebelum dan selepas permintaan HTTP mencapai aplikasi. Apabila membangunkan aplikasi API, kami biasanya perlu mengesahkan pengguna untuk memastikan bahawa hanya pengguna yang sah boleh mengakses data sensitif atau mengendalikan API.
Artikel ini akan memperkenalkan cara menggunakan perisian tengah untuk pengesahan API Contoh khusus adalah berdasarkan rangka kerja Laravel. Kami akan melaksanakan skim pengesahan token asas untuk melindungi antara muka API kami.
Pertama, kita perlu mencipta perisian tengah untuk mengesahkan Token. Jalankan arahan berikut untuk mencipta perisian tengah bernama "ApiAuthMiddleware":
php artisan make:middleware ApiAuthMiddleware
Selepas operasi berjaya, anda akan melihat fail perisian tengah yang dijana dalam direktori app/Http/Middleware.
Seterusnya, laksanakan kaedah authenticate() dalam ApiAuthMiddleware, yang akan mengesahkan sama ada Token dalam permintaan itu sah:
<?php namespace AppHttpMiddleware; use Closure; use IlluminateHttpRequest; class ApiAuthMiddleware { public function handle(Request $request, Closure $next) { $token = $request->header('Authorization'); if (!$token) { return response()->json(['message' => 'Token not provided'], 401); } // 这里可根据具体业务逻辑来验证Token的有效性,比如查询数据库或使用第三方服务进行验证 if ($token !== 'valid_token') { return response()->json(['message' => 'Invalid Token'], 401); } // Token验证通过,继续执行请求 return $next($request); } }
Dalam kod di atas, kami mula-mula mendapatkan Token daripada pengepala permintaan, dan kemudian berdasarkan perniagaan tertentu logik Sahkan kesahihan Token. Jika token tidak wujud atau pengesahan gagal, ralat 401 Tanpa Kebenaran akan dikembalikan jika tidak, kami menghantar permintaan kepada middleware atau pengendali laluan seterusnya.
Seterusnya, kita perlu mendaftarkan ApiAuthMiddleware sebagai perisian tengah global supaya pengesahan Token berlaku dalam setiap permintaan API. Tambahkan kod berikut dalam tatasusunan $routeMiddleware bagi fail app/Http/Kernel.php:
protected $routeMiddleware = [ // ... 'api.auth' => AppHttpMiddlewareApiAuthMiddleware::class, ];
Dalam kod di atas, kami mendaftarkan ApiAuthMiddleware sebagai alias 'api.auth' middleware.
Kini kita boleh menggunakan perisian tengah 'api.auth' dalam laluan atau kaedah pengawal yang memerlukan pengesahan API. Berikut ialah contoh:
<?php namespace AppHttpControllers; use IlluminateHttpRequest; class ApiController extends Controller { public function __construct() { $this->middleware('api.auth'); } public function getData(Request $request) { return response()->json(['message' => 'Authorized'], 200); } }
Dalam kod di atas, kami menggunakan kaedah middleware() dalam pembina ApiController untuk menggunakan middleware 'api.auth' kepada semua kaedah pengawal itu. Dalam kaedah getData(), kami mengembalikan mesej kejayaan kebenaran yang mudah.
Kini, apabila kami memulakan permintaan GET kepada "/api/data", permintaan itu akan disahkan terlebih dahulu oleh ApiAuthMiddleware. Jika Token dalam permintaan itu sah, mesej kebenaran yang berjaya akan dikembalikan jika tidak, ralat 401 Tanpa Kebenaran akan dikembalikan.
Ringkasan
Dengan menggunakan perisian tengah untuk pengesahan API, kami boleh melindungi antara muka API kami dengan mudah dan hanya membenarkan akses kepada pengguna yang sah. Dalam artikel ini, kami mempelajari cara mencipta dan menggunakan perisian tengah tersuai untuk mengesahkan kesahihan token dan mendaftarkannya sebagai perisian tengah global.
Sudah tentu, ini hanyalah contoh asas, anda boleh melanjutkan dan menyesuaikan logik pengesahan mengikut keperluan perniagaan anda. Pada masa yang sama, anda juga boleh menggunakan kaedah pengesahan jenis lain, seperti OAuth, JWT, dsb. Keupayaan perisian tengah yang berkuasa bagi rangka kerja Laravel menyediakan penyelesaian yang fleksibel dan mudah diperluaskan untuk pengesahan API.
Atas ialah kandungan terperinci Cara menggunakan perisian tengah untuk pengesahan API dalam Laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!