Rumah  >  Artikel  >  rangka kerja php  >  Pembangunan Laravel: Bagaimana untuk melaksanakan pengesahan API menggunakan Pasport Laravel?

Pembangunan Laravel: Bagaimana untuk melaksanakan pengesahan API menggunakan Pasport Laravel?

PHPz
PHPzasal
2023-06-13 17:34:381668semak imbas

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.

  1. Pasang Laravel Passport

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.

  1. Mengkonfigurasi Perisian Tengah Pengesahan

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.

  1. Buat laluan pengesahan API

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.

  1. Buat Pengawal Pengesahan 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.

  1. Menguji Pengesahan API

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 d6fb5a6237ab04b68d3c67881a9080fa 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"
    }
}
  1. Ringkasan

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!

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