Rumah  >  Artikel  >  rangka kerja php  >  Cara menggunakan jwt dalam laravel

Cara menggunakan jwt dalam laravel

王林
王林asal
2023-05-21 10:40:071962semak imbas

Dengan pembangunan API yang berterusan, semakin banyak aplikasi web perlu menggunakan JSON Web Token (JWT) untuk melaksanakan pengesahan dan kebenaran pengguna. Sebagai rangka kerja pilihan untuk membangunkan API, Laravel juga menyokong JWT. Artikel ini akan memperkenalkan cara menggunakan JWT dalam Laravel.

Apakah itu JWT?

JSON Web Token (JWT) ialah standard terbuka (RFC 7519) untuk menghantar tuntutan dengan selamat sebagai objek JSON antara pihak. JWT boleh digunakan untuk kebenaran, pengesahan dan pertukaran maklumat. JWT biasanya dihantar sebagai token Pembawa dalam pengepala Kebenaran permintaan HTTP.

Struktur JWT terdiri daripada tiga bahagian: pengepala, muatan dan tandatangan. Pengepala dan muatan ialah kedua-dua objek JSON, dan tandatangan ialah hasil yang disulitkan daripada menggabungkan kedua-dua bahagian ini. Oleh kerana struktur JWT sangat mudah, ia boleh dihuraikan dan disahkan dengan mudah.

Bagaimana untuk menggunakan JWT dalam Laravel?

Menggunakan JWT memerlukan pemasangan perpustakaan bergantung berikut dalam projek Laravel: tymondesigns/jwt-auth. Dalam Laravel 5.7 dan ke atas, anda boleh menggunakan arahan berikut untuk memasang pustaka bergantung:

composer require tymon/jwt-auth

Selepas pemasangan selesai, anda perlu menambah penyedia perkhidmatan dan alias berikut dalam fail config/app.php:

'providers' => [
    // Other Service Providers
    TymonJWTAuthProvidersLaravelServiceProvider::class,
],

'aliases' => [
    // Other Aliases
    'JWTAuth' => TymonJWTAuthFacadesJWTAuth::class,
    'JWTFactory' => TymonJWTAuthFacadesJWTFactory::class,
],

Seterusnya, anda perlu menjana kunci JWT. Kunci boleh dijana menggunakan arahan berikut:

php artisan jwt:secret

Perintah ini akan menjana kunci rawak dan menambahnya pada fail config/jwt.php. Adalah penting untuk melindungi kunci ini dan tidak mendedahkannya kepada sesiapa.

Selepas menjana kunci, anda boleh mula menggunakan JWT dalam Laravel. JWT boleh digunakan untuk pengesahan dan kebenaran.

Pengesahan menggunakan JWT

Proses untuk mengesahkan menggunakan JWT dalam Laravel adalah seperti berikut:

  1. Pengguna menyerahkan bukti kelayakan mereka (cth. nama pengguna dan kata laluan).
  2. Aplikasi menggunakan kelayakan ini untuk menjana JWT dan mengembalikannya kepada pengguna.
  3. Pengguna memasukkan JWT ini dalam pengepala Kebenaran sebagai token Pembawa dalam permintaan seterusnya.
  4. Aplikasi mengekstrak maklumat pengguna daripada JWT dan mengesahkan identiti mereka.

Kod untuk menjana JWT dan mengembalikannya kepada pengguna adalah seperti berikut:

public function login(Request $request)
{
    $credentials = $request->only('email', 'password');

    if (!$token = JWTAuth::attempt($credentials)) {
        return response()->json(['error' => 'Unauthorized'], 401);
    }

    return response()->json(['token' => $token]);
}

Kod untuk mengesahkan JWT dan mengekstrak maklumat pengguna adalah seperti berikut:

public function profile(Request $request)
{
    $user = JWTAuth::parseToken()->authenticate();

    return response()->json(['user' => $user]);
}

Gunakan JWT untuk kebenaran

Proses untuk menggunakan JWT untuk kebenaran dalam Laravel adalah seperti berikut:

  1. Aplikasi mengesahkan identiti pengguna sebelum mereka boleh mengakses sumber yang dilindungi.
  2. Jika pengguna telah disahkan, aplikasi menyemak bahawa JWT mengandungi peranan atau kebenaran yang sesuai.
  3. Jika pengguna mempunyai peranan atau kebenaran yang sesuai, aplikasi memberikan mereka akses kepada sumber yang diminta.

Kod untuk mengesahkan JWT dan menyemak peranan atau kebenaran pengguna adalah seperti berikut:

public function index(Request $request)
{
    $user = JWTAuth::parseToken()->authenticate();

    if ($user->hasRole('admin')) {
        $items = Item::all();
    } else {
        $items = Item::where('user_id', '=', $user->id)->get();
    }

    return response()->json(['items' => $items]);
}

Perlu diambil perhatian bahawa kaedah hasRole() di sini ialah kaedah dan keperluan tersuai berada dalam pencapaian model Pengguna.

Ringkasan

Artikel ini memperkenalkan proses penggunaan JWT untuk pengesahan dan kebenaran dalam Laravel. JWT menyediakan mekanisme pengesahan pengguna yang selamat, mudah dan berskala yang melindungi aplikasi daripada pelbagai serangan. Jika anda sedang membangunkan aplikasi web yang memerlukan API, menggunakan JWT ialah pilihan yang baik.

Atas ialah kandungan terperinci Cara menggunakan jwt dalam laravel. 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