Rumah >rangka kerja php >Laravel >Pembangunan Laravel: Bagaimana untuk melaksanakan pengesahan dan kebenaran API menggunakan Laravel Sanctum?

Pembangunan Laravel: Bagaimana untuk melaksanakan pengesahan dan kebenaran API menggunakan Laravel Sanctum?

PHPz
PHPzasal
2023-06-13 19:07:182681semak imbas

Laravel ialah rangka kerja pembangunan web PHP yang popular yang menyediakan banyak ciri dan alatan berkuasa untuk memudahkan pembangunan dan penyelenggaraan aplikasi web. Laravel Sanctum ialah pemalam untuk rangka kerja Laravel yang menyediakan keupayaan pengesahan dan kebenaran API untuk melindungi titik akhir API anda daripada akses tanpa kebenaran dengan mudah.

Dalam artikel ini, kita akan mempelajari cara melaksanakan pengesahan dan kebenaran API menggunakan Laravel Sanctum.

1. Apakah itu Laravel Sanctum?

Laravel Sanctum ialah pakej pengesahan ringan yang menyediakan fungsi pengesahan dan kebenaran API yang ringkas namun berkuasa. Ia berdasarkan perisian tengah Laravel dan pengesahan HTTP, membolehkan kami melampirkan token pengesahan dengan selamat pada permintaan API.

Laravel Sanctum menyokong dua kaedah pengesahan: Pengesahan berasaskan kuki dan pengesahan berasaskan Token. Pengesahan berasaskan kuki menggunakan perisian tengah Laravel untuk mengesahkan bahawa kuki pengesahan yang sah terdapat dalam permintaan. Satu lagi cara untuk mengesahkan Token dalam kelas Header dan semak sama ada ia sah.

2. Pasang Laravel Sanctum

Sebelum kita mula, kita perlu memasang Laravel Sanctum terlebih dahulu. Laravel Sanctum boleh dipasang dengan mudah menggunakan pengurus pakej komposer:

composer require laravel/sanctum

Sudah tentu, ia juga boleh dipasang secara manual dengan menambahkan keperluan berikut dalam fail composer.json:

{
  "require": {
    "laravel/sanctum": "^2.9"
  }
}

Setelah selesai, jalankan Perintah berikut untuk menerbitkan fail konfigurasi Laravel Sanctum dan fail pemindahan pangkalan data:

php artisan vendor:publish --tag=sanctum-config
php artisan vendor:publish --tag=sanctum-migrations
php artisan migrate

3. Konfigurasikan Laravel Sanctum

  1. Mula-mula, anda perlu menambah perisian tengah laravel/sanctum pada HTTP aplikasi anda tengah teras.

Ubah suai fail app/Http/kernel.php dan tambah perisian tengah Sanctum:

// app/Http/Kernel.php

protected $middleware = [
    // ...
    LaravelSanctumHttpMiddlewareEnsureFrontendRequestsAreStateful::class,
];

protected $middlewareGroups = [
    'web' => [
        // ...
    ],

    'api' => [
        LaravelSanctumHttpMiddlewareEnsureFrontendRequestsAreStateful::class,
        'throttle:api',
        IlluminateRoutingMiddlewareSubstituteBindings::class,
    ],
];

Ini akan memastikan pengesahan berasaskan kuki Sanctum boleh digunakan semasa setiap permintaan.

  1. Seterusnya, anda perlu mengkonfigurasi fail konfigurasi pengesahan.

Buka fail config/auth.php, cari lalai dan pengawal dan konfigurasikannya untuk menggunakan sanctum.

// config/auth.php

'defaults' => [
    'guard' => 'api',
    'passwords' => 'users',
],

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],

    'api' => [
        'driver' => 'sanctum',
        'provider' => 'users',
        'hash' => false,
    ],
],

Ini akan membolehkan kami menggunakan Sanctum untuk pengesahan berasaskan token.

  1. Tambah penyedia Sanctum.

Jika anda menggunakan versi baharu Laravel, anda tidak perlu menambah pembekal. Jika anda menggunakan versi yang lebih lama, sila buka fail config/app.php dan tambah baris berikut dalam tatasusunan penyedia:

LaravelSanctumSanctumServiceProvider::class,

4. Cipta Token Kebenaran

Sekarang, kami telah mengkonfigurasi Laravel Sanctum, seterusnya kita akan belajar cara menggunakan Sanctum untuk mencipta token kebenaran.

  1. Selepas pengguna log masuk, cipta token API untuk pengguna dalam jadual pengguna.
public function createToken(Request $request)
{
    $user = Auth::attempt(['email' => $request->input('email'), 'password' => $request->input('password')]);

    if($user) {
        $token = $user->createToken('API Token')->plainTextToken;
        
        return response()->json([
          'token' => $token,
        ]);
    } else {
        return response()->json([
          'message' => 'Invalid credentials',
        ], 401);
    }
}
  1. Setelah token dibuat, anda boleh menambahkannya pada pengepala Kebenaran setiap permintaan. Ia boleh ditetapkan seperti berikut dalam permintaan axios:
axios.defaults.headers.common['Authorization'] = `Bearer ${token}`;

5. Laksanakan pengesahan dan kebenaran API

Selepas mencipta token kebenaran, kami boleh menggunakan Sanctum untuk melindungi titik akhir API daripada Akses tanpa kebenaran. Kita boleh menggunakan perisian tengah penghalaan Laravel untuk menyemak token pengesahan dan menafikan akses tanpa kebenaran.

  1. Pertama, tentukan laluan API yang dilindungi dalam fail api.php.
// routes/api.php

Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
    return $request->user();
});

Laluan ini akan dilindungi menggunakan perisian tengah Sanctum auth.

  1. Seterusnya, akses laluan yang dilindungi dan lihat hasilnya. Ini boleh diuji dengan arahan berikut:
php artisan serve

Kini, laluan /api/pengguna boleh diakses untuk melihat butiran pengguna yang log masuk. Kini, tanpa pengepala Kebenaran, anda tidak akan dapat mengaksesnya dan akan mengembalikan kod status HTTP 401 Tanpa Kebenaran.

6. Menamatkan

Laravel Sanctum ialah penyelesaian pengesahan dan kebenaran yang berkuasa dan mudah digunakan yang boleh melaksanakan pengesahan dan kebenaran dengan mudah dalam aplikasi web dan API web Laravel. Ia dengan mudah melindungi titik akhir API anda daripada akses tanpa kebenaran dan membolehkan anda mengawal pengguna mana yang boleh mengakses titik akhir API dengan mudah. Dalam artikel ini, kami mempelajari cara memasang dan mengkonfigurasi Laravel Sanctum dan melihat cara menggunakannya untuk mencipta token kebenaran dan melaksanakan pengesahan dan kebenaran API.

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

Kenyataan:
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