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?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Lepaskan: 2023-06-13 23:41:58
asal
1247 orang telah melayarinya

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!

Label berkaitan:
sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan