Dalam artikel ini, saya akan menerangkan pengesahan token API dengan cara yang mudah difahami menggunakan gambar rajah.
Selepas memahami secara kasar cara pengesahan token API berfungsi, saya akan menerangkan cara pengesahan token API berfungsi menggunakan Laravel Sanctum dalam cara berasaskan kod.
Dengan membaca artikel ini, anda akan mempelajari perkara berikut
Klien menghantar maklumat log masuk pengguna (cth., e-mel, kata laluan) ke pelayan Auth.
Pelayan auth mengesahkan maklumat log masuk untuk menyemak sama ada pengguna wujud dan sama ada kata laluan itu betul.
Setelah log masuk berjaya, pelayan Auth menjana token API untuk pengguna. Token API yang dijana disimpan dalam jadual personal_access_tokens.
Klien menghantar permintaan API ke pelayan Sumber, melampirkan token API yang dijana pada pengepala Kebenaran.
Pelayan sumber mengesahkan token API. Jika token API sah, permintaan akan diproses.
Pelayan sumber mengembalikan respons API.
sail php artisan install:api
Arahan ini menjana fail api.php dan fail migrasi yang diperlukan untuk pengesahan token API di bawah projek Laravel.
Kemudian, laksanakan penghijrahan:
sail artisan migrate
Ini mewujudkan jadual_tokens_akses_peribadi.
2024_10_23_231407_create_personal_access_tokens_table ......... 3.84ms DONE
api.php
Route::post('/register', [AuthController::class, 'register']);
AuthController.php
public function register(Request $request) { $fields = $request->validate([ 'name' => 'required|max:255', 'email' => 'required|email|unique:users', 'password' => 'required|confirmed' ]); $user = User::create($fields); $token = $user->createToken($request->name); return [ 'user' => $user, 'token' => $token->plainTextToken ]; }
api.php
*Route*::post('/login', [*AuthController*::class, 'login']);
AuthController.php
sail php artisan install:api
*Nota: Token API baharu dijana setiap kali pengguna log masuk.
Menggunakan Posmen, hantar permintaan API dengan syarat berikut untuk menyemak respons.
Setelah log masuk berjaya, token API dijana.
Anda boleh menyemak jadual personal_access_tokens untuk mengesahkan bahawa nama pengguna yang log masuk dan token API disimpan.
*Nota: Token dalam respons API berbeza daripada token dalam jadual personal_access_tokens kerana ia dicincang apabila disimpan dalam pangkalan data.
Berikut ialah contoh kod proses CRUD untuk siaran yang dikaitkan dengan pengguna.
Kod contoh: PostController.php
Menggunakan Laravel Sanctum, hadkan akses supaya hanya pengguna log masuk boleh membuat, mengedit dan memadamkan siaran yang dikaitkan dengan pengguna.
Hantar permintaan API sebenar untuk mengesahkan bahawa Pengesahan Token API dilakukan dengan betul.
Ia juga mungkin untuk menyekat akses kepada semua titik akhir siaran yang ditetapkan dalam apiResource dengan menulis yang berikut dalam fail penghalaan.
api.php
sail php artisan install:api
sail artisan migrate
Dalam kes ini, kami mahu menetapkan pengesahan token API hanya untuk menyimpan, mengemas kini dan memadam tindakan dalam PostController. Untuk melakukan ini, cipta kaedah pembina dalam PostController dan gunakan perisian tengah auth: sanctum pada semua tindakan kecuali indeks dan tunjukkan.
PostController.php
2024_10_23_231407_create_personal_access_tokens_table ......... 3.84ms DONE
Kini, pengguna mesti memasukkan token dalam permintaan semasa membuat, mengemas kini atau memadamkan siaran.
Menguji persediaan ini, jika anda menghantar permintaan tanpa token Kebenaran untuk membuat siaran, ralat 401 dengan mesej "Tidak disahkan" dikembalikan dan penciptaan siaran gagal.
Jika token Kebenaran disertakan, data berjaya dibuat.
Begitu juga, API untuk mengemas kini dan memadamkan siaran memerlukan permintaan dihantar dengan Token dalam pengepala Kebenaran.
Sekatan akses pengguna telah dilaksanakan dengan Pengesahan Token API.
Namun, masih ada masalah.
Dalam keadaan semasanya, pengguna yang disahkan boleh mengemas kini atau memadamkan siaran pengguna lain.
Tambahkan proses untuk mengesahkan bahawa pengguna mempunyai pemilikan siaran.
Tulis logik kebenaran dalam fail dasar Laravel supaya hanya pengguna yang mempunyai pemilikan siaran boleh mengemas kini dan memadamkan siaran.
PostController.php
sail php artisan install:api
PostPolicy.php
sail artisan migrate
ubah suai kaedah:
api.php
2024_10_23_231407_create_personal_access_tokens_table ......... 3.84ms DONE
Gunakan perisian tengah auth::sanctum untuk penghalaan log keluar dan tetapkan Pengesahan Token API.
AuthController.php
Route::post('/register', [AuthController::class, 'register']);
Pelayan akan memadamkan token API semasa daripada pangkalan data. Ini menjadikan token tidak sah dan tidak boleh digunakan lagi.
Pelayan mengembalikan respons kepada pelanggan yang menunjukkan bahawa log keluar telah berjaya.
Dalam artikel ini, pengesahan token API telah dijelaskan dengan cara yang mudah difahami menggunakan gambar rajah.
Dengan memanfaatkan Laravel Sanctum, pengesahan mudah dan selamat boleh dicapai menggunakan token API, yang membolehkan pelanggan memberikan hak akses kepada pengguna individu dengan fleksibiliti yang berbeza daripada pengesahan berasaskan sesi. Menggunakan perisian tengah dan dasar, permintaan API juga boleh dilindungi dengan cekap, akses dihadkan dan pemilikan sumber disahkan.
Atas ialah kandungan terperinci Pengesahan Token API. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!