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

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

WBOY
WBOYasal
2023-06-15 20:35:241054semak imbas

Dengan perkembangan pesat teknologi mudah alih dan pengkomputeran awan, banyak syarikat telah membangunkan perkhidmatan API mereka sendiri dan menjadikannya sebahagian daripada perniagaan teras mereka. Semasa proses ini, menjadi sangat penting untuk melindungi data API dan memastikan bahawa hanya pengguna yang dibenarkan boleh mengakses data API ini. Oleh itu, pengesahan API menjadi topik penting. Dalam Laravel dan Lumen, pengesahan API boleh dilaksanakan menggunakan Pasport Laravel.

Laravel Passport ialah sistem pengesahan API berdasarkan standard OAuth2. Ia menyediakan cara mudah untuk mencipta pengesahan API dan menyokong berbilang pelanggan dan kaedah kebenaran. Dalam artikel ini, kami akan membincangkan cara melaksanakan pengesahan API menggunakan Pasport Laravel dan Lumen.

Pemasangan dan Konfigurasi Laravel Passport

Mula-mula, kita perlu memasang Laravel Passport dalam projek Laravel. Pasang menggunakan arahan berikut:

composer require laravel/passport

Setelah pemasangan selesai, kita perlu menjalankan arahan berikut untuk melakukan migrasi yang diperlukan:

php artisan migrate

php artisan passport:install

Arahan passport:install di atas akan mencipta klien dan kunci untuk Pengesahan. Kami juga perlu mendaftarkan laluan pengesahan menggunakan kaedah Passport::routes() yang disediakan oleh Laravel Passport dalam penyedia perkhidmatan permulaan:

// app/Providers/AuthServiceProvider.php

use LaravelPassportPassport;

// ...

public function boot() 
{
    // ...
    
    Passport::routes();
}

Ini akan mendaftarkan laluan yang disediakan oleh Laravel Passport supaya kami boleh menggunakannya Pengesahan . Pada masa yang sama, kita juga perlu memilih pemacu passport dalam fail konfigurasi config/auth.php:

'guards' => [
    'api' => [
        'driver' => 'passport',
        'provider' => 'users',
    ],
],

Menggunakan Pasport Laravel dalam Lumen

Jika projek kami dibuat menggunakan Rangka kerja Lumen, kemudian Kami boleh menggunakan versi Lumen bagi Pasport Laravel, yang menyediakan cara untuk serasi dengan Lumen. Kami boleh memasang Laravel Passport menggunakan arahan berikut:

composer require dusterio/lumen-passport

Selepas pemasangan selesai, kami perlu menambah dua baris kod berikut dalam fail bootstrap/app.php untuk mendaftarkan penyedia perkhidmatan Lumen Passport:

$app->register(DusterioLumenPassportPassportServiceProvider::class);
$app->configure('auth');

Selepas melengkapkan pendaftaran, kami perlu mendaftarkan penghalaan dan perisian tengah. Kami boleh menambah kod berikut pada fail app/Http/routes.php untuk mendaftarkan laluan yang disediakan oleh Lumen Passport:

$app->group(['middleware' => ['api']], function ($app) {
    DusterioLumenPassportLumenPassport::routes($app, ['prefix' => 'auth']);
});

Dalam kod di atas, pilihan prefix menentukan awalan laluan dan middleware menentukan perisian tengah yang digunakan.

Seterusnya, kita perlu menambah perisian tengah yang disediakan oleh Lumen Passport. Dalam fail bootstrap/app.php, tambahkan kod berikut untuk mendaftarkan middleware:

$app->middleware([
    // ...
    DusterioLumenPassportHttpMiddlewareAddCustomHeaders::class,
]);

Selepas pendaftaran selesai, kami telah melengkapkan konfigurasi menggunakan Laravel Passport dalam Lumen.

Menggunakan kebenaran kata laluan untuk pengesahan

Setelah kami melengkapkan konfigurasi Pasport Laravel, kami boleh menggunakan kebenaran kata laluan untuk pengesahan. Dalam kaedah kebenaran ini, pelanggan perlu menggunakan ID klien dan kunci rahsia untuk meminta token akses, dan kemudian menggunakan token akses untuk meminta sumber API yang dilindungi.

Kami boleh menggunakan kod berikut untuk meminta token akses:

$postData = [
    'grant_type' => 'password',
    'client_id' => '{client-id}',
    'client_secret' => '{client-secret}',
    'username' => '{username}',
    'password' => '{password}',
    'scope' => '',
];

$ch = curl_init('http://api.example.com/oauth/token');
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);

$accessToken = json_decode($response)->access_token;

Dalam kod di atas, kami telah menggunakan perpustakaan curl untuk meminta token akses daripada perkhidmatan API kami. Sila ambil perhatian bahawa {client-id} dan {client-secret} perlu diganti dengan ID pelanggan sebenar dan kunci rahsia, dan {username} dan {password} perlu diganti dengan bukti kelayakan pengguna sebenar.

Setelah kami memperoleh token akses, kami boleh menggunakannya untuk mengakses sumber API yang dilindungi. Apabila mengakses API, kita perlu meletakkan token akses dalam pengepala Kebenaran. Anda boleh melakukan ini dalam Laravel menggunakan kod berikut:

$response = Http::withHeaders([
    'Authorization' => 'Bearer ' . $accessToken,
])->get('http://api.example.com/api/user');

Dalam kod di atas, kami menggunakan klien HTTP Laravel untuk mengakses API. Apabila pelanggan membuat permintaan, kami meletakkan token akses dalam pengepala Kebenaran supaya perkhidmatan API boleh mengesahkan token dan mengembalikan sumber yang dilindungi.

Kesimpulan

Menggunakan Pasport Laravel dan Lumen, kami boleh menambah keupayaan pengesahan yang kukuh pada perkhidmatan API kami. Apabila melaksanakan pengesahan API, kita perlu memahami protokol kebenaran OAuth2 dan kaedah kebenarannya. Apabila menggunakan kebenaran kata laluan, pelanggan perlu menggunakan ID klien dan kunci rahsia untuk meminta token akses. Sebaik sahaja kami memperoleh token akses, kami boleh menggunakannya untuk mengakses sumber API yang dilindungi.

Atas ialah kandungan terperinci Pembangunan Laravel: Bagaimana untuk melaksanakan pengesahan API menggunakan Pasport dan Lumen 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