Maison  >  Article  >  cadre php  >  Un article présentant le mécanisme d'implémentation de Token dans Laravel

Un article présentant le mécanisme d'implémentation de Token dans Laravel

PHPz
PHPzoriginal
2023-04-23 09:13:141718parcourir

Laravel est un framework d'application web développé à l'aide du langage de programmation PHP. Ses excellentes performances sont dues à son intégration interne d'un grand nombre de packages d'extension puissants. Cela inclut l’implémentation sous-jacente de Token. Le jeton est une méthode d'authentification couramment utilisée dans les applications Web et est généralement utilisé pour protéger les API et les services Web contre tout accès illégal. Dans cet article, nous présenterons le mécanisme d'implémentation de Token dans Laravel.

1. Le concept de jeton

Token, comme son nom l'indique, fait référence à un jeton, une marque qui peut représenter une sorte d'informations d'identité ou d'autorisation. Il est généralement généré par le serveur et délivré au client une fois que le client a reçu le jeton, il est stocké localement et ajouté à l'en-tête de la demande ou aux paramètres de la demande dans les demandes ultérieures en tant qu'identification d'authentification ou d'autorisation. Le serveur peut déterminer si la demande contient des informations d'authentification ou d'autorisation en vérifiant si le jeton est valide.

L'utilisation de jetons peut protéger plus efficacement les applications Web contre les accès non autorisés, en particulier dans les API et les services Web, les jetons sont essentiels.

2. Implémentation de Laravel Token

En tant qu'excellent framework d'application Web, Laravel fournit la prise en charge des jetons dans sa fonction d'authentification intégrée. Dans Laravel, Token est implémenté à l'aide du package d'extension Laravel Sanctum.

2.1 Laravel Sanctum

Laravel Sanctum est un package d'authentification léger qui peut fournir une authentification API pour les applications Laravel, basée sur des clés API ou des jetons, permettant aux applications de mieux fonctionner dans un environnement sans état tel que les applications SPA, les applications à page unique et. applications mobiles, etc. Laravel Sanctum fournit les fonctions suivantes :

  1. Vous pouvez commencer à l'utiliser sans configuration ;
  2. Prend en charge l'utilisation de plusieurs méthodes d'authentification telles que les clés de session, de jeton et d'API ;
  3. Multiples implémentations d'authentification intégrées, telles que les cookies, Jeton, authentification, etc. ;
  4. Fournit une authentification et une génération de jetons pratiques.
  5. Meilleur processus d'authentification personnalisé.

2.2 Principe de mise en œuvre du jeton

Dans Laravel Sanctum, le principe de mise en œuvre du jeton est similaire au principe de mise en œuvre de la session. Dans la requête, lorsque le client fait une requête au serveur, le jeton est envoyé au serveur en tant que paramètre de requête ou champ d'autorisation dans l'en-tête. Le serveur vérifie si le jeton est valide et, pendant la période de validité, accorde l'autorisation pour l'opération demandée ou renvoie un message d'erreur. Le processus de mise en œuvre du jeton est le suivant :

  1. Créer un jeton : lorsqu'un utilisateur se connecte, Sanctum génère un jeton aléatoire pour l'utilisateur et enregistre le jeton dans la base de données en arrière-plan.
  2. Envoyer le jeton : utilise le jeton comme paramètre de requête ; ou En-tête Le champ Autorisation est envoyé au serveur ;
  3. Vérification du jeton : côté serveur, Sanctum vérifiera si le jeton reçu est valide et décidera de l'autoriser ou du rejeter.
  4. Gestion des jetons : Sanctum fournit une série d'API pour ; créer, révoquer, rechercher et vérifier un jeton.

3. Utilisation du jeton Laravel

Sanctum fournit une API pratique et facile à utiliser pour utiliser le jeton, y compris la création, la révocation, la recherche et la vérification du jeton, etc. Voici comment Token est utilisé :

3.1 Installer Sanctum

Dans l'application, vous devez d'abord introduire le package de dépendances de Sanctum dans le fichier composer.json de l'application :

composer require laravel/sanctum

Une fois l'installation terminée, vous devez l'ajouter à le fichier config/app.php Ajoutez la configuration suivante :

'providers' => [ 
    // Other service providers... 
    Laravel\Sanctum\SanctumServiceProvider::class, 
],

3.2 Publier la configuration

Une fois l'installation terminée, vous devez exécuter la commande suivante pour publier le fichier de configuration de Sanctum :

php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"

3.3 Configurer le Middleware

Lors de l'utilisation Sanctum, vous devez ajouter le middleware aux éléments de route correspondants. Dans Laravel, un middleware d'authentification API a été intégré et peut être appelé directement.

3.4 Créer un jeton

Après vous être connecté, vous pouvez utiliser le code suivant pour créer un jeton pour l'utilisateur actuel :

use Illuminate\Http\Request; 
use Illuminate\Support\Facades\Hash; 
use Illuminate\Validation\ValidationException; 
use App\Models\User; 
use Illuminate\Support\Facades\Auth; 
use Illuminate\Support\Facades\Route; 

// 创建Token 
Route::post('/api/token/create', function (Request $request) { 
    $request->validate([ 
        'email' => 'required|email', 
        'password' => 'required', 
    ]); 

    $user = User::where('email', $request->email)->first(); 

    if (! $user || ! Hash::check($request->password, $user->password)) { 
        throw ValidationException::withMessages([ 
            'email' => ['The provided credentials are incorrect.'], 
        ]); 
    } 

    return $user->createToken($request->header('User-Agent'))->plainTextToken; 
});

Dans le code ci-dessus, vous pouvez voir que le User-Agent de la machine est utilisé comme agent supplémentaire paramètre lors de la création du jeton. Le User-Agent est ici un en-tête HTTP qui enregistre des informations pertinentes sur le navigateur ou l'application. Ces informations seront utilisées dans le cadre du Token, de sorte qu'une fois le Token volé ou utilisé de manière malveillante, il puisse être facilement découvert et révoqué.

3.5 Révoquer le jeton

Une fois le jeton créé volé ou invalide, il peut être révoqué à l'aide du code suivant :

Auth::user()->tokens()->delete();

3.6 Extension de vérification

Sanctum fournit également une bonne extension de vérification, qui peut faciliter le contrôle d'accès. comme suit :

use Illuminate\Http\Request; 
use Illuminate\Support\Facades\Hash; 
use Illuminate\Validation\ValidationException; 
use App\Models\User; 
use Illuminate\Support\Facades\Auth; 
use Illuminate\Support\Facades\Route; 
use Laravel\Sanctum\HasApiTokens;

class User extends Authenticatable 
{
    use HasApiTokens, Notifiable;
}

Après avoir utilisé le code ci-dessus, nous pouvons utiliser l'interface can dans le modèle utilisateur pour le contrôle d'accès. Le code est le suivant :

$request->user()->can('update', $post);

Dans le code ci-dessus, can déterminera si l'utilisateur a accès en fonction de. le rôle, les autorisations et les politiques de l'utilisateur actuel pour effectuer des opérations de mise à jour. Il convient de noter que les utilisateurs doivent implémenter correctement leur propre logique de contrôle d'accès.

4. Résumé

Dans cet article, nous avons présenté le mécanisme d'implémentation sous-jacent de Token dans Laravel, en particulier la manière d'utiliser le package d'extension Sanctum. Sanctum fournit une API pratique et facile à utiliser qui peut être rapidement intégrée aux applications et améliorer la sécurité des applications. L'utilisation, la création, la révocation et la gestion du Token, ainsi que le contrôle d'accès sont tous expliqués en détail.

Dans le monde Internet d'aujourd'hui, avec l'application généralisée des API et des services Web, le jeton, en tant que méthode d'authentification, sera plus largement utilisé dans de nombreuses applications. Le framework Laravel fournit un bon mécanisme de mise en œuvre de jetons qui peut mieux protéger les applications Web contre les accès illégaux.

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!

Déclaration:
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