Dalam aplikasi web, pengesahan OAuth2 telah menjadi standard popular, membenarkan pengguna menggunakan pelayan kebenaran untuk membolehkan aplikasi pihak ketiga mengakses dan mengendalikan sumber dilindungi mereka. ThinkPHP6 ialah rangka kerja PHP yang pantas dan moden sesuai untuk semua jenis aplikasi Ia menyediakan alatan yang mudah digunakan dan berkuasa untuk melaksanakan pengesahan OAuth2. Dalam artikel ini, kami akan meneroka cara melaksanakan pengesahan OAuth2 menggunakan ThinkPHP6.
Langkah 1: Pasang ThinkPHP6
Untuk mula menggunakan ThinkPHP6, anda mesti memasang Komposer dalam persekitaran setempat anda terlebih dahulu. Buka tetingkap terminal atau baris arahan dalam direktori projek anda dan laksanakan arahan berikut:
composer create-project topthink/think oauth2
Ini akan mencipta direktori baharu yang dipanggil oauth2 dalam direktori projek anda dan memasang semua komponen ThinkPHP6 yang diperlukan.
Langkah 2: Pasang PHP-JWT
Pengesahan ThinkPHP6 OAuth2 bergantung pada PHP-JWT, iaitu perpustakaan PHP untuk menjana dan mengesahkan JSON Web Token (JWT). Sebelum itu, kita harus memasang perpustakaan PHP-JWT terlebih dahulu. Dalam tetingkap terminal atau baris arahan, laksanakan arahan berikut:
composer require firebase/php-jwt
Langkah 3: Buat pembekal perkhidmatan OAuth2
Pembekal perkhidmatan OAuth2 membenarkan aplikasi pihak ketiga mengakses kawasan yang dilindungi melalui sumber kebenaran . Dalam ThinkPHP6, pembekal perkhidmatan OAuth2 dilaksanakan berdasarkan kelas abstrak thinkoauthproviderAbstractProvider. Kami perlu mencipta pembekal perkhidmatan OAuth2 dan melaksanakan kaedah berikut:
Yang berikut ialah contoh pembekal perkhidmatan OAuth2 yang ringkas:
<?php namespace appoauthprovider; use FirebaseJWTJWT; use thinkoauthproviderAbstractProvider; class SampleProvider extends AbstractProvider { public function getClientId(): string { return 'YOUR_CLIENT_ID'; } public function getClientSecret(): string { return 'YOUR_CLIENT_SECRET'; } public function getAuthorizationUrl(): string { $authUrl = 'https://your.auth.server/auth?' . 'client_id=' . $this->getClientId() . '&redirect_uri=' . urlencode($this->getRedirectUri()) . '&response_type=code'; return $authUrl; } public function validateAuthorizationCode(string $code): ?array { $payload = JWT::decode($code, $this->getClientSecret(), array('HS256')); // Check if payload is valid return $payload; } public function refreshToken(string $refreshToken): ?array { // Implement refresh token logic return null; } }
Langkah 4: Laksanakan perisian tengah pengesahan OAuth2
Kini, kita perlu melaksanakan perisian tengah pengesahan OAuth2 dalam aplikasi. Dalam ThinkPHP6, middleware dilaksanakan berdasarkan kelas abstrak thinkmiddlewareMiddleware dan thinksessionSessionManager. Kita perlu mencipta middleware dan melaksanakan kaedah berikut:
Berikut ialah pengesahan OAuth2 yang mudah Contoh perisian tengah:
<?php namespace appmiddleware; use appoauthproviderSampleProvider; use FirebaseJWTJWT; class OAuth2Middleware { public function handle( hinkRequest $request, Closure $next) { $provider = new SampleProvider(); // Check if access token exists $accessToken = $request->header('Authorization'); if (!$accessToken) { // Redirect to auth server $authUrl = $provider->getAuthorizationUrl(); return redirect($authUrl); } // Verify access token $jwtSecret = $provider->getClientSecret(); $verify = JWT::decode($accessToken, $jwtSecret, array('HS256')); // Check if token is valid if (!$verify) { return json(array( 'error' => 'Invalid token', )); } // Set user in session $session = hinkacadeSession::get('user'); $session['id'] = $verify['id']; hinkacadeSession::set('user', $session); // Go to next middleware return $next($request); } }
Logik pelaksanaan perisian tengah di atas adalah seperti berikut:
Langkah 5: Daftar perisian tengah pengesahan OAuth2
Sekarang, kita perlu mendaftarkan perisian tengah pengesahan OAuth2 sebagai perisian tengah global dalam aplikasi. Dalam fail configmiddleware.php, tambahkan kod berikut:
<?php return [ 'oauth2' => ppmiddlewareOAuth2Middleware::class, ];
Kini, kami telah menyelesaikan semua langkah untuk melaksanakan pengesahan OAuth2 menggunakan ThinkPHP6. Anda boleh menggunakan perisian tengah pengesahan OAuth2 dalam aplikasi anda untuk melindungi laluan atau tindakan pengawal yang memerlukan akses kepada sumber yang dibenarkan. Dengan perisian tengah pengesahan OAuth2, anda boleh menggunakan mekanisme kebenaran berasaskan token untuk melindungi data pengguna dan titik akhir API yang sensitif. Manfaatkan kemudahan penggunaan dan prestasi berkuasa yang disediakan oleh ThinkPHP6 untuk membangunkan aplikasi web yang selamat dan berprestasi tinggi.
Atas ialah kandungan terperinci Cara menggunakan ThinkPHP6 untuk melaksanakan pengesahan OAuth2. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!