Rumah rangka kerja php Laravel Pembangunan Laravel: Bagaimana untuk melaksanakan pengesahan API menggunakan Laravel Passport dan JWT?

Pembangunan Laravel: Bagaimana untuk melaksanakan pengesahan API menggunakan Laravel Passport dan JWT?

Jun 13, 2023 pm 11:41 PM
laravel jwt passport

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

Pengesahan API (Antara Muka Pengaturcaraan Aplikasi) ialah keperluan biasa dalam aplikasi Internet hari ini. Sebagai rangka kerja PHP yang popular, Laravel menyediakan dua alatan, Pasport Laravel dan JWT (Token Web JSON), yang boleh membantu kami melaksanakan pengesahan API.

Artikel ini akan memperkenalkan cara melaksanakan pengesahan API menggunakan Laravel Passport dan JWT. Dalam kandungan berikut, kami akan memahami konsep asas kedua-dua alatan ini dan cara mengkonfigurasi serta menggunakannya dalam aplikasi Laravel.

Apakah Pasport Laravel?

Laravel Passport ialah pelayan OAuth2 yang dibangunkan khas untuk rangka kerja Laravel, yang boleh membantu kami membina sistem pengesahan API dengan cepat dan selamat. Pasport menyediakan satu set API untuk melaksanakan proses pengesahan dan telah melaksanakan secara dalaman satu siri kaedah pengesahan yang ditentukan oleh protokol OAuth2.

Antaranya, OAuth2 ialah protokol standard yang menggunakan kebenaran proksi. Keizinan proksi ialah mekanisme kebenaran untuk mendapatkan akses kepada sumber bagi pihak pengguna. Protokol OAuth2 mengeluarkan "token akses" kepada aplikasi pihak ketiga untuk mengakses sumber yang dilindungi bagi pihak pengguna. Oleh itu, Pasport sebenarnya memainkan peranan pelayan pengesahan OAuth2 dalam aplikasi Laravel.

Apakah itu JWT?

JWT (JSON Web Token) ialah standard terbuka (RFC 7519) untuk pengesahan dan kebenaran dalam persekitaran rangkaian teragih. JWT biasanya digunakan untuk menghantar maklumat identiti pengguna yang disahkan dan tuntutan antara pelanggan dan pelayan. JWT terdiri daripada tiga bahagian: pengepala, muatan dan tandatangan.

Biasanya, pengepala mengandungi jenis JWT dan algoritma penyulitan yang digunakan, muatan mengandungi maklumat identiti dan tuntutan pengguna, dan tandatangan digunakan untuk mengesahkan ketulenan JWT. Apabila menggunakan JWT untuk pengesahan, pelayan menentukan identiti pengguna dengan menyahsulit maklumat dalam JWT, dengan itu mencapai pengesahan API.

Mengkonfigurasi Laravel Passport dan JWT

Sebelum menggunakan Laravel Passport dan JWT untuk pengesahan API, kita perlu mengkonfigurasinya dalam aplikasi Laravel terlebih dahulu. Berikut ialah langkah konfigurasi khusus:

Langkah 1: Pasang Laravel Passport dan tymon/jwt-auth

Gunakan komposer dalam alat baris arahan untuk memasang Laravel Passport dan tymon/jwt-auth:

composer require laravel/passport
composer require tymon/jwt-auth
Salin selepas log masuk

Langkah 2: Konfigurasi Pasport Laravel

Dalam fail config/app.php, tambah penyedia perkhidmatan berikut:

'providers' => [
    ...
    LaravelPassportPassportServiceProvider::class,
],
Salin selepas log masuk

Kemudian, jalankan arahan berikut untuk mencipta Jadual data pasport:

php artisan migrate
Salin selepas log masuk

Untuk kaedah pengesahan lalai Pasport "Pemberian Kata Laluan", kami menambah "PassportHasApiTokens" (Sifat pengesahan pengguna lalai Pasport) pada model Pengguna. Buka fail User.php dan tambah kandungan berikut:

use LaravelPassportHasApiTokens;

class User extends Authenticatable
{
    use HasApiTokens, Notifiable;
    ...
}
Salin selepas log masuk

Langkah 3: Konfigurasikan JWT

Mula-mula, dalam fail config/app.php, tambahkan JWTServiceProvider:

'providers' => [
    ...
    TymonJWTAuthProvidersLaravelServiceProvider::class,
],
Salin selepas log masuk

Kemudian , jalankan arahan berikut untuk menjana kunci rahsia yang diperlukan untuk JWT:

php artisan jwt:secret
Salin selepas log masuk

Dalam fail config/auth.php, tambah konfigurasi pengawal jwt (gunakan jwt sebagai pilihan pengawal pengawal), dan tetapkan pemacu pengesahan lalai Tetapkan kepada "jwt":

'guards' => [
    ...
    'jwt' => [
        'driver' => 'jwt',
        'provider' => 'users'
    ],
],
...
'defaults' => [
    'guard' => 'jwt',
    ...
],
Salin selepas log masuk

Dalam fail config/auth.php, tambah konfigurasi pengguna pembekal pengguna JWT (arahkan untuk menggunakan model Eloquent):

'providers' => [
    ...
    'users' => [
        'driver' => 'eloquent',
        'model' => AppModelsUser::class
    ]
],
Salin selepas log masuk

Menggunakan Laravel Passport dan JWT API Authentication

Setelah persiapan selesai, kami dengan senang hati boleh melaksanakan API authentication menggunakan Laravel Passport dan JWT. Berikut ialah proses operasi khusus:

Langkah 1: Daftar laluan API

Mula-mula, daftar laluan API dalam fail route/api.php. Sebagai contoh, kami mentakrifkan laluan GET untuk mendapatkan maklumat pengguna:

Route::middleware('auth:api')->get('/user', function (Request $request) {
    return $request->user();
});
Salin selepas log masuk

Auth:api middleware Laravel digunakan di sini, yang akan memastikan permintaan daripada pengguna yang disahkan boleh lulus. Dengan penghalaan middleware, kami menambah langkah pengesahan ini pada laluan.

Langkah 2: Buat token akses

Pengguna memerlukan token akses untuk mengakses API. Kami perlu menggunakan kata laluan untuk membenarkan token akses Langkah-langkah pelaksanaan khusus adalah seperti berikut:

Anda perlu terlebih dahulu menentukan laluan untuk menerima nama pengguna dan kata laluan yang disediakan oleh pengguna:

Route::post('/login', function (Request $request) {
    $http = new GuzzleHttpClient;

    $response = $http->post('http://your-app.com/oauth/token', [
        'form_params' => [
            'grant_type' => 'password',
            'client_id' => 'client-id',
            'client_secret' => 'client-secret',
            'username' => $request->username,
            'password' => $request->password,
            'scope' => '',
        ],
    ]);

    return json_decode((string) $response->getBody(), true);
});
Salin selepas log masuk

Dalam kod di atas, kami menggunakan GuzzleHttp Pelanggan menghantar permintaan POST untuk mendapatkan token akses. Antaranya, grant_type mestilah "kata laluan", client_id dan client_secret masing-masing sepadan dengan ID dan Rahsia yang digunakan dalam Pasport Laravel. Selepas permintaan berjaya, respons JSON akan dikembalikan yang mengandungi token akses pengguna access_token untuk mengakses API.

Langkah 3: Mulakan permintaan API

Kami boleh menggunakan token access_token yang diperoleh untuk menghantar permintaan kepada API, mengesahkan identiti pengguna dan mendapatkan sumber yang dilindungi. Apabila membuat permintaan kepada API, anda mesti menambah pasangan nilai kunci Kebenaran dalam pengepala, yang nilainya ialah "Token_akses pembawa". Contohnya:

$accessToken = 'your-access-token';
$response = $http->withHeaders([
    'Authorization' => 'Bearer ' . $accessToken
])->get('http://your-app.com/api/user');
Salin selepas log masuk

Jika permintaan berjaya, API akan mengembalikan maklumat pengguna.

Kesimpulan

Dalam aplikasi Laravel, Laravel Passport menyediakan protokol pengesahan OAuth2 yang berkuasa dan fungsi pengesahan API, dan JWT ialah kaedah pengesahan yang selamat dan mudah. Dalam pembangunan sebenar, kami boleh menggunakan Laravel Passport dan JWT dalam kombinasi untuk meningkatkan keselamatan dan kebolehpercayaan API dan melindungi data pengguna daripada dicuri atau diganggu oleh penyerang berniat jahat.

Atas ialah kandungan terperinci Pembangunan Laravel: Bagaimana untuk melaksanakan pengesahan API menggunakan Laravel Passport dan JWT?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

PHP vs. Flutter: Pilihan terbaik untuk pembangunan mudah alih PHP vs. Flutter: Pilihan terbaik untuk pembangunan mudah alih May 06, 2024 pm 10:45 PM

PHP vs. Flutter: Pilihan terbaik untuk pembangunan mudah alih

Laravel - Perintah Artisan Laravel - Perintah Artisan Aug 27, 2024 am 10:51 AM

Laravel - Perintah Artisan

Analisis kelebihan dan kekurangan alat ujian unit PHP Analisis kelebihan dan kekurangan alat ujian unit PHP May 06, 2024 pm 10:51 PM

Analisis kelebihan dan kekurangan alat ujian unit PHP

Bagaimana untuk menggunakan pemetaan hubungan objek (ORM) dalam PHP untuk memudahkan operasi pangkalan data? Bagaimana untuk menggunakan pemetaan hubungan objek (ORM) dalam PHP untuk memudahkan operasi pangkalan data? May 07, 2024 am 08:39 AM

Bagaimana untuk menggunakan pemetaan hubungan objek (ORM) dalam PHP untuk memudahkan operasi pangkalan data?

Seni bina dan amalan sistem teragih PHP Seni bina dan amalan sistem teragih PHP May 04, 2024 am 10:33 AM

Seni bina dan amalan sistem teragih PHP

Perbandingan versi terkini Laravel dan CodeIgniter Perbandingan versi terkini Laravel dan CodeIgniter Jun 05, 2024 pm 05:29 PM

Perbandingan versi terkini Laravel dan CodeIgniter

Bagaimanakah keupayaan pemprosesan data dalam Laravel dan CodeIgniter dibandingkan? Bagaimanakah keupayaan pemprosesan data dalam Laravel dan CodeIgniter dibandingkan? Jun 01, 2024 pm 01:34 PM

Bagaimanakah keupayaan pemprosesan data dalam Laravel dan CodeIgniter dibandingkan?

Ujian unit kod PHP dan ujian integrasi Ujian unit kod PHP dan ujian integrasi May 07, 2024 am 08:00 AM

Ujian unit kod PHP dan ujian integrasi

See all articles