PHP Academy · Pelajaran

Pengesahan dengan Laravel Sanctum

Keluarkan dan sahkan token API menggunakan Sanctum untuk klien SPA dan mudah alih.

Pelajaran 3 daripada 413 langkah

Pengesahan dengan Laravel Sanctum ialah pelajaran PHP Academy percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran PHP Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus PHP Academy merangkumi sejumlah 4 pelajaran.

Apakah Sanctum?

Laravel Sanctum menyediakan sistem pengesahan berasaskan token yang ringkas untuk SPA dan klien mudah alih. Ia menyokong token API dan pengesahan berasaskan sesi untuk SPA pihak pertama.

Memasang Sanctum

Pasang dan konfigurasikan Sanctum.

$ composer require laravel/sanctum
$ php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
$ php artisan migrate

Mengeluarkan Token

Jana token akses peribadi untuk pengguna selepas mengesahkan kelayakan mereka.

<?php
Route::post("/login", function (Request $request) {
    $request->validate(["email" => "required", "password" => "required"]);
    $user = User::where("email", $request->email)->first();
    if (!$user || !Hash::check($request->password, $user->password)) {
        throw ValidationException::withMessages([
            "email" => ["The provided credentials are incorrect."],
        ]);
    }
    $token = $user->createToken("mobile-app")->plainTextToken;
    return response()->json(["token" => $token]);
});

Sifat HasApiTokens

Tambahkan sifat HasApiTokens pada model User Anda untuk mengaktifkan pengurusan token.

<?php
use Laravel\Sanctum\HasApiTokens;

class User extends Authenticatable
{
    use HasApiTokens, HasFactory, Notifiable;
}

Melindungi Laluan

Gunakan middleware auth:sanctum untuk melindungi laluan API.

<?php
// routes/api.php
Route::middleware("auth:sanctum")->group(function () {
    Route::get("/user",  fn(Request $r) => $r->user());
    Route::apiResource("posts", PostController::class);
});

Menghantar Token

Klien menghantar token dalam pengepala Authorization sebagai token Bearer.

# HTTP header:
Authorization: Bearer 1|AbCdEf1234567890...

Skop Token (Keupayaan)

Berikan keupayaan kepada token untuk mengehadkan tindakan yang boleh dilakukannya.

<?php
// Create token with abilities:
$token = $user->createToken("mobile", ["read:posts", "write:comments"])->plainTextToken;

// Check ability:
if ($user->tokenCan("write:comments")) {
    // allowed
}

Membatalkan Token

Padamkan token tertentu atau semua token (log keluar daripada semua peranti).

<?php
// Revoke current token (logout):
$request->user()->currentAccessToken()->delete();

// Revoke all tokens (logout everywhere):
$request->user()->tokens()->delete();

Tamat Tempoh Token

Tetapkan tamat tempoh token dalam config/sanctum.php. Token disemak berdasarkan last_used_at dan tempoh tamat.

// config/sanctum.php
"expiration" => 60 * 24 * 7, // 7 days in minutes

Pengesahan SPA

Untuk SPA dalam domain yang sama, Sanctum boleh menggunakan pengesahan berasaskan sesi dan bukannya token. Panggil /sanctum/csrf-cookie dahulu, kemudian gunakan log masuk biasa.

Sanctum berbanding Passport

Sanctum: token API ringkas dan pengesahan SPA. Passport: pelayan OAuth2 penuh dengan kod kebenaran, kelayakan klien dan token penyegaran. Mulakan dengan Sanctum; beralih kepada Passport hanya jika Anda memerlukan OAuth2.

Ringkasan

Sanctum mengeluarkan token Bearer untuk pengesahan API. Tambahkan HasApiTokens pada model User. Lindungi laluan dengan auth:sanctum. Batalkan token semasa log keluar. Gunakan keupayaan untuk mengehadkan skop keizinan.

Semakan Pantas

Bagaimanakah klien menyertakan token Sanctum dalam permintaan API?

Percuma untuk bermula

Pelajari PHP dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
49
Pelajaran
195

Soalan Lazim

Adakah pelajaran “Pengesahan dengan Laravel Sanctum” percuma?

Ya — teks penuh “Pengesahan dengan Laravel Sanctum” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus PHP Academy, tingkat taraf kepada CoddyKit PRO. Kursus PHP Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Pengesahan dengan Laravel Sanctum”?

Keluarkan dan sahkan token API menggunakan Sanctum untuk klien SPA dan mudah alih. Anda berlatih PHP Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan PHP Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran PHP Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.

Berapa lamakah pelajaran “Pengesahan dengan Laravel Sanctum” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran PHP Academy ini?

Ya. Setiap pelajaran PHP Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Laluan API dan Pengawal Sumber
  2. Sumber API dan Respons JSON
  3. Pengesahan dengan Laravel Sanctum
  4. Pengehadan Kadar dan Pemversian API
← Kembali ke PHP Academy