Heim >Backend-Entwicklung >PHP-Tutorial >Laravel Dingo/API fügt JWT-Auth-Authentifizierung hinzu
Dieser Artikel befasst sich hauptsächlich mit dem Hinzufügen der JWT-Auth-Authentifizierung zu Laravel Dingo/API. Jetzt kann ich ihn mit Ihnen teilen.
Wir haben etwas über Laravel Dingo gelernt früher. /apiErstellen Sie eine einfache API, damit die API für alle zugänglich ist. Wie können Aufrufe der API angezeigt und eingeschränkt werden? Sie können jwt-auth verwenden, um die JSON-Web-Token-Authentifizierung zu überprüfen
1. Installieren Sie zunächst das jwt-auth-Plug-in und installieren Sie es mit Composer in der Befehlszeile
composer require tymon/jwt-auth '0.5.*'
2. Dann veröffentlichen
php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\JWTAuthServiceProvider"
Eine jwt.php-Datei wird in /config/
generiert 3. Schlüssel generieren
php artisan jwt:generate
Wenn der Befehl nicht ausgeführt werden kann, können Sie den Changeme-Schlüsselsatz für sich selbst in der Datei /config/jwt.php
'secret' => env('JWT_SECRET', 'changeme'),4. Ändern Sie /app/Api/Controllers/HelloController.php in
<?php namespace App\Api\Controllers; use Illuminate\Http\Request; use App\Http\Controllers\Controller; //添加jwt-auth认证 use JWTAuth; use Tymon\JWTAuth\Exceptions\JWTException; class HelloController extends Controller { public function index() { return '{content:Helloworld!}'; } //添加jwt-auth认证 public function authenticate(Request $request) { // grab credentials from the request $credentials = $request->only('email', 'password'); try { // attempt to verify the credentials and create a token for the user if (! $token = JWTAuth::attempt($credentials)) { return response()->json(['error' => 'invalid_credentials'], 401); } } catch (JWTException $e) { // something went wrong whilst attempting to encode the token return response()->json(['error' => 'could_not_create_token'], 500); } // all good so return the token return response()->json(compact('token')); } }5. Routing hinzufügen (/routes/web .php)
$api->post('auth', 'App\Api\Controllers\HelloController@authenticate');6. Routing testen: php artisan api:routes, wenn die folgende Eingabeaufforderung erscheint, bedeutet das es ist korrekt Zugriffs-URL: ***.com/api/auth zeigt einen Fehler an, da kein Token hinzugefügt wurdeHellocontrol und Routen neu ändern
<?php namespace App\Api\Controllers; use Illuminate\Http\Request; use App\Http\Controllers\Controller; use JWTAuth; use Tymon\JWTAuth\Exceptions\JWTException; class HelloController extends Controller { /** * Create a new controller instance. * * @return void */ /** * Show the application dashboard. * * @return \Illuminate\Http\Response */ public function index() { return '{content:Helloworld!}'; } public function authenticate(Request $request) { // grab credentials from the request $credentials = $request->only('email', 'password'); try { // attempt to verify the credentials and create a token for the user if (! $token = JWTAuth::attempt($credentials)) { return response()->json(['error' => 'invalid_credentials'], 401); } } catch (JWTException $e) { // something went wrong whilst attempting to encode the token return response()->json(['error' => 'could_not_create_token'], 500); } // all good so return the token return response()->json(compact('token')); } //添加user public function user() { JWTAuth::parseToken(); $user = JWTAuth::parseToken()->authenticate(); return $user; } }
name('home'); $api = app('Dingo\Api\Routing\Router'); $api->version('v1', function ($api) { $api->get('helloworld', 'App\Api\Controllers\HelloController@index'); $api->post('auth', 'App\Api\Controllers\HelloController@authenticate'); $api->get('auth', 'App\Api\Controllers\HelloController@user'); });Verwenden Sie das Google Chrome Postman-Plugin, um das Token zu erhalten. Die Schritte sind wie gezeigt in der Abbildung unten. Kopieren Sie das erhaltene Token im zweiten Schritt. Abbildung 5 zeigt den Benutzer, den wir gerade registriert haben 🎜>
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für das Lernen aller hilfreich sein. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.
Verwandte Empfehlungen:Erläuterung der Methode zur Verwendung von Passport zur Implementierung der Auth-Authentifizierung in Laravel 5.5
Implementierung des automatischen Ladens von Composer in das Laravel-Framework Detaillierte Erklärung
Das obige ist der detaillierte Inhalt vonLaravel Dingo/API fügt JWT-Auth-Authentifizierung hinzu. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!