So verwenden Sie das Hyperf-Framework für die JWT-Authentifizierung
Oct 24, 2023 pm 12:36 PMSo verwenden Sie das Hyperf-Framework für die JWT-Authentifizierung
Einführung:
Hyperf ist ein leistungsstarkes Coroutine-Framework auf Basis von Swoole, das umfangreiche Funktionen und flexible Skalierbarkeit bietet. JWT (JSON Web Token) ist ein offener Standard zur Authentifizierung und übertragung von Informationen. In diesem Artikel stellen wir die Verwendung der JWT-Authentifizierung im Hyperf-Framework vor und stellen spezifische Codebeispiele bereit.
1. Abh?ngigkeitspakete installieren
Zun?chst müssen wir die Abh?ngigkeitspakete hyperf/jwt und lcobucci/jwt installieren. Es kann über Composer installiert werden, ?ffnen Sie das Terminal und führen Sie den folgenden Befehl aus:
composer require hyperf/jwt lcobucci/jwt
2. Authentifizierungsinformationen konfigurieren
Im Hyperf-Framework müssen wir die relevanten Informationen konfigurieren, die für die JWT-Authentifizierung erforderlich sind. ?ffnen Sie die Datei config/autoload/jwt.php
und fügen Sie die folgenden Konfigurationselemente hinzu: config/autoload/jwt.php
文件,添加如下配置項(xiàng):
<?php return [ 'default' => [ 'valid_seconds' => env('JWT_VALID_SECONDS', 3600), // Token有效期 'secret' => env('JWT_SECRET', 'your-secret-key'), // 對稱加密密鑰 'refresh_ttl' => env('JWT_REFRESH_TTL', 20160), // Token刷新有效期 'password_key' => env('JWT_PASSWORD_KEY', 'password'), // 密碼字段名稱 'blacklist_enabled' => env('JWT_BLACKLIST_ENABLED', true), // Token黑名單啟用 'blacklist_grace_period' => env('JWT_BLACKLIST_GRACE_PERIOD', 60), // Token寬限期 'claim' => [], // 自定義Claims ], ];
三、生成和解析JWT Token
首先,我們需要生成JWT Token。在控制器中引入HyperfJwtJwt
類,并通過make()
方法生成Token。示例代碼如下:
<?php declare(strict_types=1); namespace AppController; use HyperfDiAnnotationInject; use PsrHttpMessageResponseInterface; class AuthController extends AbstractController { /** * @Inject * @var HyperfJwtJwt */ private $jwt; public function login(): ResponseInterface { // 對用戶進(jìn)行驗(yàn)證,驗(yàn)證通過后生成Token $userId = 1; $token = $this->jwt->make(['user_id' => $userId]); return $this->response->json([ 'token' => $token->toString(), 'expires_at' => $token->getClaim('exp'), ]); } }
接下來,我們需要在中間件中驗(yàn)證JWT Token并解析出用戶信息。在中間件中引入HyperfJwtMiddlewareJwtMiddleware
類,并使用handle()
方法進(jìn)行驗(yàn)證和解析。示例代碼如下:
<?php declare(strict_types=1); namespace AppMiddleware; use HyperfDiAnnotationInject; use HyperfHttpServerContractRequestInterface; use HyperfHttpServerContractResponseInterface as HttpResponse; use HyperfUtilsContext; use HyperfUtilsStr; use HyperfJwtExceptionTokenValidException; use HyperfJwtJwtInterface; use PsrContainerContainerInterface; class JwtMiddleware { /** * @Inject * @var HyperfJwtJwt */ private $jwt; /** * @var JwtInterface */ private $jwtFactory; /** * @var RequestInterface */ private $request; /** * @var HttpResponse */ private $response; public function __construct(ContainerInterface $container, JwtInterface $jwt, RequestInterface $request, HttpResponse $response) { $this->jwtFactory = $jwt; $this->request = $request; $this->response = $response; } public function handle($request, Closure $next) { $token = Str::replaceFirst('Bearer ', '', $this->request->header('Authorization')); // 從Header中獲取Token if (empty($token)) { throw new TokenValidException('Token not provided'); } try { $token = $this->jwtFactory->parse($token); // 解析Token $claims = $token->claims(); // 獲取Token中的聲明 Context::set('user_id', $claims->get('user_id')); // 設(shè)置用戶ID到上下文 } catch (TokenValidException $e) { throw new TokenValidException('Invalid token', $e->getCode(), $e); } return $next($request); } }
四、使用中間件進(jìn)行認(rèn)證
在路由中使用中間件進(jìn)行JWT認(rèn)證。打開config/routes.php
文件,添加如下路由和中間件配置項(xiàng):
<?php use AppMiddlewareJwtMiddleware; Router::addGroup('/api', function () { Router::post('/login', 'AppControllerAuthController@login'); // 需要認(rèn)證的路由 Router::addGroup('/auth', function () { Router::get('/info', 'AppControllerAuthController@info'); }, ['middleware' => [JwtMiddleware::class]]); });
在上面的示例中,AppControllerAuthController@info
rrreee
Zuerst müssen wir das JWT-Token generieren. Führen Sie die Klasse HyperfJwtJwt
in den Controller ein und generieren Sie Token über die Methode make()
. Der Beispielcode lautet wie folgt:
rrreee
HyperfJwtMiddlewareJwtMiddleware
in die Middleware ein und verwenden Sie die Methode handle()
zur überprüfung und Analyse. Der Beispielcode lautet wie folgt: ??rrreee?? 4. Verwenden Sie Middleware für die Authentifizierung. ?? Verwenden Sie Middleware beim Routing für die JWT-Authentifizierung. ?ffnen Sie die Datei config/routes.php
und fügen Sie die folgenden Routing- und Middleware-Konfigurationselemente hinzu: ??rrreee??Im obigen Beispiel ist AppControllerAuthController@info
die Schnittstelle, die eine Authentifizierung erfordert. Auf diese Schnittstelle kann nur erfolgreich zugegriffen werden, wenn ein gültiges JWT-Token vorhanden ist. ????Fazit: ??Dieser Artikel stellt die Verwendung des Hyperf-Frameworks für die JWT-Authentifizierung vor und bietet relevante Konfigurations- und Codebeispiele. Durch die JWT-Authentifizierung k?nnen wir im Hyperf-Framework h?here Sicherheits- und Benutzerüberprüfungsfunktionen erreichen. Ich hoffe, dieser Artikel wird Ihnen bei der Verwendung des Hyperf-Frameworks für die JWT-Authentifizierung hilfreich sein. ??Das obige ist der detaillierte Inhalt vonSo verwenden Sie das Hyperf-Framework für die JWT-Authentifizierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Magnet-Link ist eine Link-Methode zum Herunterladen von Ressourcen, die bequemer und effizienter ist als herk?mmliche Download-Methoden. Mit Magnet-Links k?nnen Sie Ressourcen im Peer-to-Peer-Verfahren herunterladen, ohne auf einen Zwischenserver angewiesen zu sein. In diesem Artikel erfahren Sie, wie Sie Magnetlinks verwenden und worauf Sie achten sollten. 1. Was ist ein Magnet-Link? Ein Magnet-Link ist eine Download-Methode, die auf dem P2P-Protokoll (Peer-to-Peer) basiert. über Magnet-Links k?nnen Benutzer eine direkte Verbindung zum Herausgeber der Ressource herstellen, um die gemeinsame Nutzung und das Herunterladen von Ressourcen abzuschlie?en. Im Vergleich zu herk?mmlichen Download-Methoden magnetisch

Verwendung von MDF- und MDS-Dateien Dank der kontinuierlichen Weiterentwicklung der Computertechnologie k?nnen wir Daten auf vielf?ltige Weise speichern und teilen. Im Bereich digitaler Medien sto?en wir h?ufig auf spezielle Dateiformate. In diesem Artikel besprechen wir ein g?ngiges Dateiformat – MDF- und MDS-Dateien – und stellen deren Verwendung vor. Zuerst müssen wir die Bedeutung von MDF-Dateien und MDS-Dateien verstehen. mdf ist die Erweiterung der CD/DVD-Imagedatei und die mds-Datei ist die Metadatendatei der mdf-Datei.

Einfacher Einstieg: So verwenden Sie pip Mirror Source Mit der weltweiten Beliebtheit von Python ist pip zu einem Standardtool für die Python-Paketverwaltung geworden. Ein h?ufiges Problem, mit dem viele Entwickler bei der Installation von Paketen mit pip konfrontiert sind, ist jedoch die Langsamkeit. Dies liegt daran, dass pip standardm??ig Pakete von offiziellen Python-Quellen oder anderen externen Quellen herunterl?dt und diese Quellen sich m?glicherweise auf Servern im Ausland befinden, was zu langsamen Download-Geschwindigkeiten führt. Um die Download-Geschwindigkeit zu verbessern, k?nnen wir die Pip-Spiegelquelle verwenden. Was ist eine Pip-Spiegelquelle? Um es einfach auszudrücken: einfach

foobar2000 ist eine Software, die Ihnen jederzeit Musik aller Art mit verlustfreier Klangqualit?t bietet Spielen Sie das erweiterte Audio auf dem Computer ab, um ein bequemeres und effizienteres Musikwiedergabeerlebnis zu erm?glichen. Das Interface-Design ist einfach, klar und benutzerfreundlich. Es nimmt einen minimalistischen Designstil an, ohne überm??ige Dekoration Es unterstützt au?erdem eine Vielzahl von Skins und Themes, personalisiert Einstellungen nach Ihren eigenen Vorlieben und erstellt einen exklusiven Musikplayer, der die Wiedergabe mehrerer Audioformate unterstützt. Au?erdem unterstützt es die Audio-Gain-Funktion zum Anpassen der Lautst?rke Passen Sie die Lautst?rke entsprechend Ihrem H?rzustand an, um H?rsch?den durch zu hohe Lautst?rke zu vermeiden. Als n?chstes lass mich dir helfen

CrystalDiskMark ist ein kleines HDD-Benchmark-Tool für Festplatten, das schnell sequentielle und zuf?llige Lese-/Schreibgeschwindigkeiten misst. Lassen Sie sich als N?chstes vom Redakteur CrystalDiskMark und die Verwendung von CrystalDiskMark vorstellen ). Zuf?llige I/O-Leistung. Es ist eine kostenlose Windows-Anwendung und bietet eine benutzerfreundliche Oberfl?che und verschiedene Testmodi zur Bewertung verschiedener Aspekte der Festplattenleistung. Sie wird h?ufig in Hardware-Reviews verwendet

Cloud-Speicher sind heutzutage aus unserem t?glichen Leben und Arbeiten nicht mehr wegzudenken. Als einer der führenden Cloud-Speicherdienste in China hat Baidu Netdisk mit seinen leistungsstarken Speicherfunktionen, der effizienten übertragungsgeschwindigkeit und dem komfortablen Bedienerlebnis die Gunst einer gro?en Anzahl von Benutzern gewonnen. Und egal, ob Sie wichtige Dateien sichern, Informationen teilen, Videos online ansehen oder Musik h?ren m?chten, Baidu Cloud Disk kann Ihre Anforderungen erfüllen. Viele Benutzer verstehen jedoch m?glicherweise nicht die spezifische Verwendung der Baidu Netdisk-App. Dieses Tutorial führt Sie daher im Detail in die Verwendung der Baidu Netdisk-App ein. Wenn Sie immer noch verwirrt sind, folgen Sie bitte diesem Artikel, um mehr im Detail zu erfahren. So verwenden Sie Baidu Cloud Network Disk: 1. Installation W?hlen Sie beim Herunterladen und Installieren der Baidu Cloud-Software zun?chst die benutzerdefinierte Installationsoption aus.

MetaMask (auf Chinesisch auch Little Fox Wallet genannt) ist eine kostenlose und beliebte Verschlüsselungs-Wallet-Software. Derzeit unterstützt BTCC die Bindung an die MetaMask-Wallet. Nach der Bindung k?nnen Sie sich mit der MetaMask-Wallet schnell anmelden, Werte speichern, Münzen kaufen usw. und bei der erstmaligen Bindung einen Testbonus von 20 USDT erhalten. Im BTCCMetaMask-Wallet-Tutorial stellen wir detailliert vor, wie man MetaMask registriert und verwendet und wie man das Little Fox-Wallet in BTCC bindet und verwendet. Was ist die MetaMask-Wallet? Mit über 30 Millionen Nutzern ist MetaMask Little Fox Wallet heute eines der beliebtesten Kryptow?hrungs-Wallets. Die Nutzung ist kostenlos und kann als Erweiterung im Netzwerk installiert werden

NetEase Mailbox ist eine von chinesischen Internetnutzern weit verbreitete E-Mail-Adresse und hat mit seinen stabilen und effizienten Diensten schon immer das Vertrauen der Benutzer gewonnen. NetEase Mailbox Master ist eine E-Mail-Software, die speziell für Mobiltelefonbenutzer entwickelt wurde. Sie vereinfacht das Senden und Empfangen von E-Mails erheblich und macht unsere E-Mail-Verarbeitung komfortabler. Wie Sie NetEase Mailbox Master verwenden und welche spezifischen Funktionen es bietet, wird Ihnen der Herausgeber dieser Website im Folgenden ausführlich vorstellen und hofft, Ihnen weiterzuhelfen! Zun?chst k?nnen Sie die NetEase Mailbox Master-App im Mobile App Store suchen und herunterladen. Suchen Sie im App Store oder im Baidu Mobile Assistant nach ?NetEase Mailbox Master“ und befolgen Sie dann die Anweisungen zur Installation. Nachdem der Download und die Installation abgeschlossen sind, ?ffnen wir das NetEase-E-Mail-Konto und melden uns an. Die Anmeldeschnittstelle ist wie unten dargestellt
