Rumah  >  Artikel  >  rangka kerja php  >  laravel jwt padam

laravel jwt padam

王林
王林asal
2023-05-29 09:31:36675semak imbas

Kata Pengantar

Dalam proses menggunakan Laravel dan JWT untuk pembangunan web, anda mungkin menghadapi situasi memadamkan JWT Artikel ini akan memperkenalkan cara memadamkan JWT dalam rangka kerja Laravel.

Keperluan memadamkan JWT

JWT menyelesaikan isu pengesahan dan kebenaran pengguna dengan baik, tetapi dalam beberapa kes, anda mungkin perlu memadamkan JWT. Berikut ialah beberapa sebab:

  1. Isu Keselamatan: JWT yang terjejas atau terjejas boleh membawa kepada kelemahan keselamatan yang serius.
  2. Isu penyalahgunaan: Jika aplikasi anda mengumpul data tentang aktiviti pengguna, anda mungkin perlu mengalih keluar JWT untuk berhenti mengumpul data apabila pengguna log keluar atau keluar dari aplikasi.
  3. Untuk nyahpepijat: Mengalih keluar JWT boleh membantu anda mensimulasikan semula aliran log masuk pengguna.

Langkah-langkah untuk memadamkan JWT

Untuk memadamkan JWT, terdapat tiga langkah:

  1. Batalkan JWT: JWT boleh dibatalkan, dengan itu membuat ia tidak sah. Untuk mencapai matlamat ini, anda perlu mengekalkan senarai hitam JWT yang disimpan.
  2. Ubah suai tempoh sah JWT: Anda boleh menetapkan tempoh sah JWT kepada tempoh masa yang lebih singkat untuk memastikan JWT yang berpotensi terjejas luput dengan lebih cepat.
  3. Padamkan JWT: Anda boleh meminta pengguna memadamkan JWT secara manual atau dengan menulis kod untuk memadamkannya.

Kami akan menerangkan langkah-langkah ini dengan lebih terperinci.

Membatalkan JWT

Pembatalan JWT memerlukan anda mengekalkan senarai hitam JWT. Apabila pengguna log keluar atau keluar dari aplikasi, tambahkan JWT pengguna ke senarai hitam. Apabila pengguna cuba mengakses aplikasi anda menggunakan JWT ini, aplikasi anda menyemak sama ada JWT berada dalam senarai hitam. Jika ya, pengguna tidak dibenarkan memasuki aplikasi anda. Berikut ialah langkah-langkah untuk mencapainya:

Langkah 1: Cipta perisian tengah

Buat perisian tengah yang dipanggil "JwtBlacklist".

php artisan make:middleware JwtBlacklist

Langkah 2: Tulis kod

Tulis kod berikut dalam kaedah pemegang middleware:

public function handle($request, Closure $next)
{
    $token = $request->bearerToken();

    if(auth()->check()){
        auth()->logout();
        JWTAuth::invalidate(JWTAuth::getToken());
        return response()->json(['message' => 'Logout successful']);
    }elseif($token){
        try {
            JWTAuth::parseToken()->authenticate();
            JWTAuth::invalidate(JWTAuth::getToken());
            return response()->json(['message' => 'Logout successful']);
        } catch (JWTException $e) {
            // ignore errors
        }
    }

    return $next($request);
}

Langkah 3: Daftar middleware

Dalam apl Daftar middleware dalam tatasusunan $routeMiddleware bagi fail /Http/Kernel.php.

'jwt.blacklist' => AppHttpMiddlewareJwtBlacklist::class,

Ubah suai tempoh sah JWT

JWT terdiri daripada tiga bahagian, iaitu pengepala (objek JSON yang dikodkan Base64), muatan (objek JSON yang dikodkan Base64) dan tandatangan. Oleh itu, anda boleh menukar tempoh sah dalam beban.

Dalam Laravel/JWT, anda boleh menggunakan kod seperti ini:

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

    if ($token = JWTAuth::attempt($credentials, ['exp' => Carbon::now()->addHours(24)->timestamp])) {
        return response()->json(['message' => 'Success', 'token' => $token]);
    }

    return response()->json(['error' => 'Unauthorized'], 401);
}

Dalam kod di atas, kami menetapkan tempoh sah JWT kepada 24 jam.

Padam JWT

Jika anda memerlukan pengguna memadamkan JWT secara manual, anda perlu menjelaskan maklumat ini kepada pengguna. Anda boleh menyediakan butang atau pautan untuk tindakan log keluar supaya pengguna boleh memadamkan JWT.

Jika anda ingin memadamkan JWT dengan menulis kod, anda boleh menambah kod berikut pada pengawal anda:

public function logout(Request $request) {
    JWTAuth::invalidate(JWTAuth::getToken());
    return response()->json(['message' => 'Logout successful']);
}

Pengawal ini akan memadamkan JWT apabila pengguna mengklik butang log keluar.

Kesimpulan

Artikel ini menerangkan cara memadamkan JWT dalam Laravel dan JWT. Anda boleh melakukan ini dengan membatalkan, mengubah suai tempoh sah JWT dan memadamkan JWT. Jika anda mempunyai sebarang pertanyaan atau pertanyaan, sila tinggalkan mesej di ruangan komen dan saya akan membalas secepat mungkin.

Atas ialah kandungan terperinci laravel jwt padam. 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
Artikel sebelumnya:peningkatan nilai medan laravelArtikel seterusnya:peningkatan nilai medan laravel