Laravel ialah rangka kerja aplikasi web PHP sumber terbuka yang direka untuk membantu pembangun membina aplikasi web yang cekap dengan mudah. Pasport Laravel ialah sebahagian daripada rangka kerja Laravel Ia adalah pelayan pengesahan yang melaksanakan protokol OAuth2 dan menyediakan sokongan yang kuat untuk pembangunan API. Dalam artikel ini, kami akan membincangkan cara melaksanakan pengesahan API menggunakan Pasport Laravel.
Sebelum menggunakan Laravel Passport, kita perlu memasangnya terlebih dahulu. Pasport Laravel boleh dipasang dengan menjalankan arahan berikut:
composer require laravel/passport
Selepas pemasangan selesai, anda juga perlu menjalankan perintah php artisan migrate
untuk mencipta jadual data yang diperlukan.
Untuk menggunakan Pasport Laravel untuk pengesahan API, kita perlu menggabungkannya dengan perisian tengah pengesahan Laravel. Perisian tengah pengesahan yang sepadan boleh ditambah untuk kumpulan API dalam fail app/Http/Kernel.php
:
protected $middlewareGroups = [ 'api' => [ 'throttle:60,1', IlluminateRoutingMiddlewareSubstituteBindings::class, LaravelPassportHttpMiddlewareCreateFreshApiToken::class, ], ];
di mana CreateFreshApiToken
perisian tengah akan menyemak token API pada setiap permintaan dan memuat semula token secara automatik jika diperlukan Kad.
Seterusnya, kita perlu mencipta laluan pengesahan yang sepadan untuk API. Laluan berikut boleh ditambah dalam fail routes/api.php
:
Route::post('login', 'APIAuthController@login'); Route::post('register', 'APIAuthController@register'); Route::group(['middleware' => ['auth:api']], function() { Route::get('details', 'APIAuthController@details'); // 添加更多需要登录才能访问的API路由 });
Dalam kod di atas, perisian tengah auth:api
akan memastikan bahawa hanya pengguna yang disahkan boleh mengakses laluan ini. AuthController
ialah pengawal yang akan kami cipta kemudian yang mengandungi logik untuk mengendalikan pengesahan dan penghalaan API.
Sekarang, kita perlu mencipta pengawal yang mengendalikan pengesahan dan penghalaan API. AuthController
boleh dibuat menggunakan arahan berikut:
php artisan make:controller API/AuthController
AuthController
hendaklah mengandungi kaedah berikut:
use IlluminateHttpRequest; use IlluminateSupportFacadesAuth; use IlluminateSupportFacadesValidator; use AppUser; class AuthController extends Controller { /** * 用户注册 * * @param IlluminateHttpRequest $request * @return IlluminateHttpResponse */ public function register(Request $request) { $validator = Validator::make($request->all(), [ 'name' => 'required|string|max:255', 'email' => 'required|string|email|unique:users', 'password' => 'required|string|min:6', ]); if ($validator->fails()){ return response(['errors'=>$validator->errors()->all()], 400); } $request['password'] = bcrypt($request['password']); $user = User::create($request->toArray()); $token = $user->createToken('MyApp')->accessToken; return response(['token' => $token], 200); } /** * 用户登录 * * @param IlluminateHttpRequest $request * @return IlluminateHttpResponse */ public function login(Request $request) { $validator = Validator::make($request->all(), [ 'email' => 'required|string|email', 'password' => 'required|string', ]); if ($validator->fails()) { return response(['errors'=>$validator->errors()->all()], 400); } if (!Auth::attempt(['email' => $request['email'], 'password' => $request['password']])) { return response(['message' => 'Invalid login credentials'], 400); } $user = $request->user(); $token = $user->createToken('MyApp')->accessToken; return response(['token' => $token], 200); } /** * 获取用户详细信息 * * @param IlluminateHttpRequest $request * @return IlluminateHttpResponse */ public function details(Request $request) { return response()->json(['user' => $request->user()], 200); } }
register()
kaedah digunakan untuk pendaftaran pengguna, kaedah login()
digunakan untuk log masuk pengguna, Kaedah details()
digunakan untuk mendapatkan butiran pengguna yang log masuk. Adalah penting untuk ambil perhatian bahawa kaedah register()
dan login()
akan mencipta token API baharu untuk pengguna yang disahkan dan mengembalikannya kepada pelanggan.
Kini kami boleh menguji pengesahan API dengan menghantar nama pengguna dan kata laluan. Perintah berikut boleh dilaksanakan menggunakan alat seperti Posman atau curl:
curl -X POST http://your-app-url/api/login -H 'content-type: application/json' -d '{ "email": "user@example.com", "password": "password" }'
Jika nama pengguna dan kata laluan adalah betul, respons yang mengandungi token API akan diterima:
{ "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImU4YmI2Njk0MGEyNmIzY2Q2ZmY4M2Q3MjQ5ZjgzODE1MTI2ZmRkMDIyM2YyMzVmOGZmNjhlOWM5NGU2Mzk4ZTU3ZWZiMDJhNmQyZmRlZjA2In0.eyJhdWQiOiIxIiwianRpIjoiZThiYjY2OTAwZTI2YjNjZDZmZjgzZDcyNDlmODM4MTUxMjZmZGQwMjIzZjIzNWY4ZmY2OGU5Yzk0ZTYzOThlNTdlZmIwMmE2ZDJmZGVmMDYiLCJpYXQiOjE2Mjg5NDM3NzQsIm5iZiI6MTYyODk0Mzc3NCwiZXhwIjoxNjMxMDQ5Nzc0LCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.toR762TgsNDarQZs6azl-jg-tP2996vzUc-LOQB90Twcb0Y3BC5vrd3jDW70QQw961MwV_sFrU1dhyKLMN76lG6B03zv6GjU6tLHyrqQi88t0clSrVupAcaQHOAB0gGLBRAOc5Ql1z9CHXx8f_FkA3RVC4htHNTk_r0mM-szWcf1sRONQYaARPDFl7ZJwj1_wYB7M6dcpiEDDhpyzmRFPv7pYyX8805BL4yg6z-Kmxc-DW4GSS4NTBxnctwGPf9w8fYc2zJGHXmT6OtqVjuqKDdFQgxIQhEkeSldBZmzTIPIR_tTa8Ub3Cxlx69zAfJTHosXwPYQOO03LBJwNVdjeLIkKgQK1PcAXD2kN4-RuyTEMXYNQ0wRGaHIb3vxwqVdjrrVE9yrDMIpAPRgzFwzXbJWvKmxzZpFTUz9RvIqUFt2zNbIG5kLOUyvmKIqO-aTISCT0wu0T0ZEq-DpXJ7-C6z-M0cJJP37y7eV4jdAMx7yD9jT85Knv4_hjLyKvF4We5DSSOYjeIVoq3XHNJdmYJ7X3ph6Ko1CfdtVKNVf20Vx8Z_Zi-pe9bTY0n-tSkwDvVXpVOrb3BOalq7MbOpTe8Klf9uZ_ZIDqTlTnrYV_oh_5isrImv7r8D1NX1G4p9jRcI16MEFDE" }
Kemudian, arahan lain boleh digunakan Untuk mengakses laluan yang memerlukan pengesahan:
curl -X GET http://your-app-url/api/details -H 'authorization: Bearer <token>'
Dalam arahan di atas, gantikan <token>
dengan token API yang diperoleh dalam langkah sebelumnya. Jika token itu sah, anda akan mendapat respons yang disahkan:
{ "user": { "id": 1, "name": "User", "email": "user@example.com", "email_verified_at": null, "created_at": "2021-08-13T02:58:04.000000Z", "updated_at": "2021-08-13T02:58:04.000000Z" } }
Dalam artikel ini, kami membincangkan cara melaksanakan pengesahan API menggunakan Pasport Laravel. Menggunakan Pasport Laravel, anda boleh dengan mudah menambah sokongan pengesahan yang kukuh pada API web anda, menjadikan data pengguna anda lebih selamat. Laravel Passport juga menyediakan ciri berkuasa lain seperti pengurusan token akses API dan pengurusan klien OAuth2. Jika anda seorang pembangun Laravel, pastikan anda mengetahui lebih lanjut tentang Pasport Laravel dan menggunakannya dalam projek web anda yang seterusnya.
Atas ialah kandungan terperinci Pembangunan Laravel: Bagaimana untuk melaksanakan pengesahan API menggunakan Pasport Laravel?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!