Heim >Backend-Entwicklung >PHP-Tutorial >Laravel Dingo/API fügt JWT-Auth-Authentifizierung hinzu

Laravel Dingo/API fügt JWT-Auth-Authentifizierung hinzu

不言
不言Original
2018-07-09 09:48:543213Durchsuche

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 &#39;{content:Helloworld!}&#39;;
    }
//添加jwt-auth认证
  	public function authenticate(Request $request)
    {
        // grab credentials from the request
        $credentials = $request->only(&#39;email&#39;, &#39;password&#39;);

        try {
            // attempt to verify the credentials and create a token for the user
            if (! $token = JWTAuth::attempt($credentials)) {
                return response()->json([&#39;error&#39; => &#39;invalid_credentials&#39;], 401);
            }
        } catch (JWTException $e) {
            // something went wrong whilst attempting to encode the token
            return response()->json([&#39;error&#39; => &#39;could_not_create_token&#39;], 500);
        }

        // all good so return the token
        return response()->json(compact(&#39;token&#39;));
    }
}

5. Routing hinzufügen (/routes/web .php)

$api->post(&#39;auth&#39;, &#39;App\Api\Controllers\HelloController@authenticate&#39;);

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 wurde

Hellocontrol 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 &#39;{content:Helloworld!}&#39;;
    }
  	public function authenticate(Request $request)
    {
        // grab credentials from the request
        $credentials = $request->only(&#39;email&#39;, &#39;password&#39;);

        try {
            // attempt to verify the credentials and create a token for the user
            if (! $token = JWTAuth::attempt($credentials)) {
                return response()->json([&#39;error&#39; => &#39;invalid_credentials&#39;], 401);
            }
        } catch (JWTException $e) {
            // something went wrong whilst attempting to encode the token
            return response()->json([&#39;error&#39; => &#39;could_not_create_token&#39;], 500);
        }

        // all good so return the token
        return response()->json(compact(&#39;token&#39;));
    }
  //添加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(&#39;auth&#39;, &#39;App\Api\Controllers\HelloController@authenticate&#39;);
  $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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn