Rumah > rangka kerja php > ThinkPHP > teks badan

Menggunakan JWT untuk pengesahan dalam ThinkPHP6

王林
Lepaskan: 2023-06-21 13:34:40
asal
2015 orang telah melayarinya

Dalam pembangunan aplikasi Internet berskala besar hari ini, pengesahan keselamatan pengguna merupakan bahagian penting. Untuk memastikan keselamatan pengguna, amalan biasa adalah menggunakan Token Web JSON (JWT) untuk pengesahan. Ia boleh melaksanakan pengesahan pengguna dan kawalan kebenaran dengan mudah dan berkesan. Dalam artikel ini, kami akan memperkenalkan cara menggunakan JWT untuk pengesahan dalam projek ThinkPHP6.

Apakah itu JSON Web Token?

JSON Web Token (JWT) ialah mekanisme pengesahan yang ringan. Tujuannya adalah untuk menghantar tuntutan dengan selamat melalui rangkaian, dan ia boleh digunakan sebagai cara pengesahan dan pertukaran tuntutan. JWT terkandung dalam pengepala permintaan HTTP atau parameter URL, jadi ia mudah dan mudah dipindahkan antara pelayan dan klien.

JWT terdiri daripada tiga bahagian: pengepala, muatan dan tandatangan. Pengepala mengandungi maklumat yang menerangkan algoritma dan jenis tandatangan, muatan mengandungi maklumat pengisytiharan dan data, dan tandatangan digunakan untuk mengesahkan kesahihan JWT. Sebarang data boleh disimpan dalam muatan JWT, dan anda boleh menyesuaikan maklumat yang anda perlukan.

Langkah untuk menggunakan JWT untuk pengesahan dalam ThinkPHP6

Langkah 1: Pasang sambungan jwt-auth

Pertama, kami perlu memperkenalkan sambungan jwt-auth ke dalam projek. Tambahkan kebergantungan berikut dalam fail composer.json:

"tymon/jwt-auth": "^1.0.0-rc.5"
Salin selepas log masuk

Gunakan kemas kini komposer untuk mengemas kini selepas memasang dependensi.

Langkah 2: Jana fail konfigurasi

Jalankan arahan berikut untuk menjana fail konfigurasi:

php think jwt:publish
Salin selepas log masuk

Selepas menjana fail konfigurasi, kita perlu mengubah suai konfigurasi, tetapkan kunci JWT dan tempoh sah, dsb. Parameter, cuma ubah suai fail /config/jwt.php.

Langkah 3: Tulis perisian tengah pengesahan

Proses pengesahan JWT perlu diselesaikan di bahagian pelayan. Oleh itu, kita perlu mencipta AuthMiddleware middleware untuk mengesahkan JWT sebelum permintaan sampai kepada pengawal.

Pertama, kita perlu mencipta fail AuthMiddleware:

php think make:middleware AuthMiddleware
Salin selepas log masuk

Dalam fail AuthMiddleware, kita boleh menggunakan kod berikut untuk mengesahkan JWT:

<?php
namespace appmiddleware;

use thinkacadeRequest;
use TymonJWTAuthExceptionsTokenExpiredException;
use TymonJWTAuthFacadesJWTAuth;
use thinkexceptionHttpException;

class AuthMiddleware
{
    public function handle($request, Closure $next)
    {
        //获取JWT token
        $token = JWTAuth::getToken();
        if (!$token) {
            throw new HttpException(401, 'Token not provided');
        }

        try {
            //验证JWT token
            $user = JWTAuth::authenticate($token);
            $request->user = $user;
        } catch (TokenExpiredException $exception) {
            throw new HttpException(401, 'Token expired');
        } catch (Exception $exception) {
            throw new HttpException(401, 'Token invalid');
        }

        return $next($request);
    }
}
Salin selepas log masuk

Dalam fungsi pemegang, kami mula-mula Dapatkan token JWT. Jika token tidak wujud, pengecualian 401 akan dibuang.

Jika token wujud, kami menggunakan JWTAuth::authenticate($token) untuk mengesahkan kesahihan token Jika berjaya, maklumat pengguna akan terikat pada konteks permintaan.

Perlu diambil perhatian bahawa dalam kod di atas, semua pengecualian yang dilemparkan akan mengembalikan kod ralat 401.

Langkah 4: Gunakan middleware untuk pengesahan

Gunakan AuthMiddleware middleware dalam pengawal untuk pengesahan, seperti yang ditunjukkan di bawah:

<?php
namespace appcontroller;

use appmiddlewareAuthMiddleware;

class UserController extends Base
{
    protected $middleware = [
        AuthMiddleware::class
    ];

    public function index()
    {
        return json($this->request->user, 200);
    }
}
Salin selepas log masuk

Dalam kod di atas, kami Pengawal menambah AuthMiddleware middleware, jadi ia akan dilaksanakan secara automatik sebelum permintaan sampai ke pengawal.

Kaedah indeks pengawal mengembalikan maklumat pengguna semasa yang meminta Jika pengesahan JWT betul, maklumat pengguna dalam format json akan dikembalikan.

Kesimpulan

Artikel ini memperkenalkan cara menggunakan JWT untuk pengesahan dalam projek ThinkPHP6. Kami memperkenalkan proses pelaksanaan pengesahan JWT secara terperinci dengan memasang sambungan JWT dan menjana fail konfigurasi, menulis perisian tengah pengesahan dan menggunakan perisian tengah. Semasa proses ini, kami mendapat pemahaman yang lebih mendalam tentang pengetahuan berkaitan JWT dan memberikan pengalaman berharga untuk pembangunan Internet masa hadapan.

Atas ialah kandungan terperinci Menggunakan JWT untuk pengesahan dalam ThinkPHP6. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!