Pengesahan Token API

Susan Sarandon
Lepaskan: 2024-11-09 20:44:02
asal
260 orang telah melayarinya

pengenalan

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

  • Cara Pengesahan Token API Berfungsi
  • Cara memasang Laravel Sanctum
  • Menjana Token API pada Pendaftaran Pengguna dan Log Masuk
  • Pengesahan token API untuk menyekat akses dan mengesahkan pemilikan sumber
  • Pemadaman token API semasa log keluar

Cara Pengesahan Token API Berfungsi

API Token Authentication

1. Pendaftaran Pengguna/Permintaan Log Masuk

Klien menghantar maklumat log masuk pengguna (cth., e-mel, kata laluan) ke pelayan Auth.

2. Pengesahan Pengguna

Pelayan auth mengesahkan maklumat log masuk untuk menyemak sama ada pengguna wujud dan sama ada kata laluan itu betul.

3.  Penjanaan Token API

Setelah log masuk berjaya, pelayan Auth menjana token API untuk pengguna. Token API yang dijana disimpan dalam jadual personal_access_tokens.

4. Permintaan API

Klien menghantar permintaan API ke pelayan Sumber, melampirkan token API yang dijana pada pengepala Kebenaran.

5.  Pengesahan Token API

Pelayan sumber mengesahkan token API. Jika token API sah, permintaan akan diproses.

6. Respons API

Pelayan sumber mengembalikan respons API.

Bagaimana untuk memasang Laravel Sanctum

sail php artisan install:api
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

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
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Ini mewujudkan jadual_tokens_akses_peribadi.

2024_10_23_231407_create_personal_access_tokens_table ......... 3.84ms DONE
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Menjana Token API pada Pendaftaran Pengguna dan Log Masuk

API Token Authentication

Kod Contoh

api.php

Route::post('/register', [AuthController::class, 'register']);
Salin selepas log masuk
Salin selepas log masuk

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
    ];
}
Salin selepas log masuk

Pendaftaran Pengguna

  1. Pendaftaran pengguna.
  2. Pengguna baharu disimpan dalam jadual pengguna.
  3. Token API dijana. (createToken)
  4. Token API yang dijana dan maklumat pengguna disimpan dalam jadual personal_access_tokens dan token API disediakan kepada pengguna.

Kod Contoh

api.php

*Route*::post('/login', [*AuthController*::class, 'login']);
Salin selepas log masuk

AuthController.php

sail php artisan install:api
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Log Masuk Pengguna

  1. Log masuk pengguna.
  2. Sahkan jika pengguna wujud dalam jadual pengguna.
  3. Token API dijana selepas log masuk berjaya. (createToken)
  4. Token API yang dijana dan maklumat pengguna disimpan dalam jadual personal_access_tokens dan token API disediakan kepada pengguna.

*Nota: Token API baharu dijana setiap kali pengguna log masuk.

Penjanaan Token API

Menggunakan Posmen, hantar permintaan API dengan syarat berikut untuk menyemak respons.

API Token Authentication

Setelah log masuk berjaya, token API dijana.

API Token Authentication

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.

Pengesahan Token API

API Token Authentication

  1. Pengguna menghantar permintaan API dan menyertakan token API dalam pengepala Kebenaran.
  2. auth:sanctum middleware sepadan dengan token API yang diterima daripada permintaan API terhadap token API yang disimpan dalam jadual personal_access_tokens.
  3. Jika token API berjaya disahkan, pelayan Sumber memproses permintaan API.
  4. Pengguna yang disahkan boleh mengemas kini atau memadamkan siaran.
  5. Pelayan sumber mengembalikan respons API.

Hadkan akses kepada fungsi siaran

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.

Piawaian Kawalan Akses

API pengguna

  • indeks, tunjukkan Tindakan ini menyediakan maklumat awam secara amnya dan tidak memerlukan pengesahan token API untuk pengalaman pengguna dan SEO yang lebih baik.
  • simpan, kemas kini, padam Untuk menghalang akses tanpa kebenaran dan mengekalkan integriti data, pengesahan token API diperlukan.

API Pentadbir

  • indeks, tunjukkan, simpan, kemas kini, padam Untuk keselamatan yang dipertingkatkan, API yang tidak perlu didedahkan kepada umum harus dilindungi dengan memerlukan pengesahan pengguna untuk semua tindakan pengawal.

Pengekodan

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
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
sail artisan migrate
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

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
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

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.

API Token Authentication

Jika token Kebenaran disertakan, data berjaya dibuat.

API Token Authentication

Begitu juga, API untuk mengemas kini dan memadamkan siaran memerlukan permintaan dihantar dengan Token dalam pengepala Kebenaran.

Pasca Pengesahan Pemilikan

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.

API Token Authentication

  1. Pengguna menghantar permintaan API dan menyertakan token API dalam pengepala Kebenaran.
  2. auth:sanctum middleware sepadan dengan token API yang diterima daripada permintaan API terhadap token API yang disimpan dalam jadual personal_access_tokens.
  3. auth:sanctum middleware mendapatkan pengguna dikaitkan dengan token API dan menyemak sama ada pengguna ini mempunyai pemilikan siaran sasaran.
  4. Jika token API berjaya disahkan dan pengguna mempunyai pemilikan siaran sasaran, pelayan Sumber akan memproses permintaan API.
  5. Pengguna yang disahkan dengan pemilikan siaran boleh mengemas kini dan memadamkan siaran.
  6. Pelayan sumber mengembalikan respons API.

Pengekodan

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
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
  • Menerima permintaan
    • Pengguna menghantar permintaan API dan menyertakan token API dalam pengepala Kebenaran.
  • Pengesahan Token
    • Pelayan sumber mendapat token API daripada pengepala Kebenaran permintaan API. Dan kemudian mengesahkan bahawa token API yang diterima daripada permintaan sepadan dengan token API yang disimpan dalam jadual personal_access_tokens.
  • Pengenalan Pengguna
    • Jika token itu sah, pengguna yang dikaitkan dengan token itu dikenal pasti. Kita boleh mendapatkan pengguna yang dikenal pasti dengan kaedah $request->user().
  • Memanggil polisi Kaedah Gate::authorize memberikan pengguna yang disahkan dan objek sumber sebagai hujah kepada kaedah dasar.

PostPolicy.php

sail artisan migrate
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

ubah suai kaedah:

  • Hujah:
    • $user: Contoh pengguna yang sedang disahkan.
    • $post: Contoh model Post.
  • Logik:
    • Semak sama ada pengguna yang disahkan pada masa ini mempunyai pemilikan siaran yang ditentukan.

Mengemas kini siaran pengguna lain

API Token Authentication

  1. Tetapkan id siaran sebagai parameter laluan untuk menyiarkan titik akhir API kemas kini.
  2. Sertakan token pengguna yang tidak memiliki siaran ini dalam pengepala Kebenaran.
  3. Mengembalikan mesej ralat 403 yang menyatakan bahawa anda bukan pemilik siaran itu.

Pemadaman token API semasa log keluar

API Token Authentication

Aliran Log Keluar

  1. Pengguna menghantar permintaan API dan menyertakan token API dalam pengepala Kebenaran
  2. auth:sanctum middleware sepadan dengan token API yang diterima daripada permintaan API terhadap token API yang disimpan dalam jadual personal_access_tokens.
  3. Jika token API berjaya disahkan, pelayan Sumber memproses permintaan API.
  4. Padamkan token API pengguna yang disahkan daripada jadual personal_access_tokens.
  5. Pelayan sumber mengembalikan respons API.

Pengekodan

api.php

2024_10_23_231407_create_personal_access_tokens_table ......... 3.84ms DONE
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Gunakan perisian tengah auth::sanctum untuk penghalaan log keluar dan tetapkan Pengesahan Token API.

AuthController.php

Route::post('/register', [AuthController::class, 'register']);
Salin selepas log masuk
Salin selepas log masuk

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.

Ringkasan

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!

sumber:dev.to
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan