Maison > développement back-end > tutoriel php > laravel dingo/api ajoute l'authentification jwt-auth

laravel dingo/api ajoute l'authentification jwt-auth

不言
Libérer: 2023-04-02 21:34:01
original
3217 Les gens l'ont consulté

Cet article présente principalement l'ajout de l'authentification jwt-auth à laravel dingo/api. Il a une certaine valeur de référence. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer

Nous avons découvert Laravel Dingo. plus tôt. /apiCréer une API simple pour que l'API soit ouverte à tous. Comment afficher et restreindre les appels à l'API ? Vous pouvez utiliser jwt-auth pour vérifier l'authentification par jeton Web JSON

 1. Installez d'abord le plug-in jwt-auth et utilisez composer pour l'installer sur la ligne de commande

composer require tymon/jwt-auth '0.5.*'
Copier après la connexion

 2. Publiez ensuite

php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\JWTAuthServiceProvider"
Copier après la connexion

 Un fichier jwt.php est généré dans /config/

 3. Générer la clé

php artisan jwt:generate
Copier après la connexion

Si la commande ne peut pas être exécutée, vous pouvez modifier la clé définie par changeme dans le /config/jwt Fichier .php

'secret' => env('JWT_SECRET', 'changeme'),
Copier après la connexion

 4. Modifiez /app/Api/Controllers/HelloController.php en

<?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;));
    }
}
Copier après la connexion

5. Ajouter un routage (/routes/web.php)

$api->post(&#39;auth&#39;, &#39;App\Api\Controllers\HelloController@authenticate&#39;);
Copier après la connexion

6. Tester le routage : php artisan api :routes, si l'invite suivante apparaît Correct

URL d'accès : ***.com/api/auth affiche une erreur car aucun jeton n'est ajouté

Remodifiez hellocontrol et routes

<?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;
    }
}
Copier après la connexion

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');
});
Copier après la connexion

Utilisez le plug-in postman de Google Chrome pour obtenir le jeton. est la méthode de publication. Les étapes sont indiquées dans la figure ci-dessous

Copiez le jeton obtenu et collez-le dans le jeton de vérification de l'utilisateur dans la deuxième étape. l'utilisateur que nous venons d'enregistrer

Ce qui précède est l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'étude de chacun. Pour plus de contenu connexe, veuillez prêter attention au. Site Web chinois PHP !

Recommandations associées :

Explication de la méthode d'utilisation de Passport pour implémenter l'authentification Auth dans Laravel 5.5

Implémentation du chargement automatique du compositeur dans le framework Laravel Explication détaillée

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal