


Développement Laravel : Comment implémenter l'authentification API à l'aide de Laravel Sanctum ?
Avec la popularité des API RESTful et l'utilisation généralisée des applications, de plus en plus d'applications nécessitent une authentification et une autorisation des API, la sécurité des API est donc devenue un aspect extrêmement important dans le développement logiciel actuel. Laravel Sanctum est un système d'authentification léger introduit directement avec Laravel 7.0, conçu pour rendre l'authentification API simple et sécurisée. Dans cet article, nous expliquerons comment utiliser Sanctum dans Laravel pour garantir la sécurité des API.
- Installer Laravel Sanctum
Avant de commencer, nous devons confirmer que la version Laravel 7.0+ a été installée. Ensuite, nous pouvons utiliser composer pour installer les dépendances de Laravel Sanctum :
composer require laravel/sanctum
Après avoir installé Sanctum, ajoutez le code suivant au fichier config/app.php
: config/app.php
文件中加入以下代码:
'providers' => [ // ... LaravelSanctumSanctumServiceProvider::class, ], 'aliases' => [ //... 'Sanctum' => LaravelSanctumSanctum::class, ]
这样,Laravel应用程序就已经使用了Sanctum提供的服务和功能。
- 配置数据库
接下来,在执行数据库迁移之前,我们需要设置Sanctum的数据库表。 Larave lSanctum默认提供了一个包含以下字段的personal_access_tokens
数据库表:
id
:令牌的唯一标识符tokenable_type
:与令牌关联的模型的类名tokenable_id
:与令牌关联的模型的IDname
:令牌的名称token
:API令牌的值abilities
:令牌的授权
在创建personal_access_tokens
表之前,我们需要先创建模型关系。可以通过在AuthServiceProvider
中注册以下内容来完成:
use LaravelSanctumSanctum; //... public function boot() { $this->registerPolicies(); Sanctum::ignoreMigrations(); Sanctum::actingAs( null, [ 'superuser' ]); }
Sanctum::ignoreMigrations()
用于阻止Laravel在artisan migrate
命令中执行Sanctum的数据库迁移文件。但是,在大多数情况下,我们只是将其添加到数据库迁移文件的命令中。Sanctum::actingAs()
还提供了一种仅用于开发的方法,该方法在没有用户身份验证的情况下模拟用户身份。
然后,我们需要运行以下命令来创建personal_access_tokens
表:
php artisan migrate
- 创建API令牌
Laravel Sanctum为我们提供了两种方式来为API生成令牌。一种是CreateToken
方法,该方法可以创建一个或多个包含可选名称和授予权限的API令牌。这里我们介绍第二种方法,即使用hasApiTokens()
函数配合createToken()
函数:
// use the HasApiTokens trait within your User Model use LaravelSanctumHasApiTokens; class User extends Authenticatable { use HasApiTokens, Notifiable; // ... } // create a Token with User ID and given Abilities $personalAccessToken = $user->createToken('API Token', ['server:get','server:post']);
这里我们在用户模型中使用了HasApiTokens
Trait,以便在用户模型中实现API令牌功能。我们使用createToken
方法来创建一个API令牌,并在创建令牌时指定了一个可选的名称和授权的权限键。
- 保护API路由
有了API密钥,我们就可以将其注入到每个请求中以进行身份验证。我们可以在Laravel的路由文件中使用sanctum
中间件来保护API路由,以便验证请求中的令牌:
// A Group of API routes that require a valid Token Route::group(['middleware' => 'auth:sanctum'], function () { Route::get('/user', function (Request $request) { return $request->user(); }); });
在这段代码中,我们定义了一个包含验证sanctum
中间件的路由组。 路由组中包含一条路由,该路由仅需要一个有效的Token才能访问。
- 使用Bearer令牌
使用Bearer
令牌是通过HTTP Authorization
头来发送API令牌的最常见方法。可以通过在请求头中加入Authorization: Bearer {{$personalAccessToken->plainTextToken}}
来授权令牌:
curl -H "Authorization: Bearer xxxxx" http://example.com/api/user
- 撤销API令牌
最后,我们需要了解如何撤销API令牌。我们可以使用tokens()->delete()
函数来删除某个用户的所有API令牌,或使用revoke()
$user->tokens()->delete(); $personalAccessToken->revoke();
Configurer la base de données
Ensuite, avant d'effectuer la migration de la base de données, nous devons configurer la table de la base de données de Sanctum. LaravelSanctum fournit par défaut une table de base de donnéespersonal_access_tokens
qui contient les champs suivants : #🎜🎜#- #🎜🎜#
id
: L'identifiant unique du jeton #🎜🎜 ##🎜🎜#tokenable_type
: Le nom de classe du modèle associé au token #🎜🎜##🎜🎜#tokenable_id
: L'ID du modèle associé au token #🎜 🎜##🎜🎜#name
: Le nom du token #🎜🎜##🎜🎜#token
: La valeur du token API #🎜🎜## 🎜🎜#capacités : Autorisation de jeton #🎜🎜#personal_access_tokens
, nous devons d'abord créer la relation modèle. Cela peut être fait en enregistrant ce qui suit dans AuthServiceProvider
: #🎜🎜#rrreee#🎜🎜#Sanctum::ignoreMigrations()
est utilisé pour empêcher Laravel de migrer dans artisan
Exécutez le fichier de migration de la base de données de Sanctum dans la commande. Cependant, dans la plupart des cas, nous l'ajoutons simplement à la commande du fichier de migration de la base de données. Sanctum::actingAs()
fournit également une méthode de développement uniquement qui emprunte l'identité d'un utilisateur sans authentification de l'utilisateur. #🎜🎜##🎜🎜# Ensuite, nous devons exécuter la commande suivante pour créer la table personal_access_tokens
: #🎜🎜#rrreee- #🎜🎜#Create API Token# 🎜 🎜##🎜🎜##🎜🎜#Laravel Sanctum nous propose deux façons de générer des jetons pour les API. L'une est la méthode
CreateToken
, qui crée un ou plusieurs jetons API avec des noms facultatifs et des autorisations accordées. Nous introduisons ici la deuxième méthode, qui consiste à utiliser la fonction hasApiTokens()
en conjonction avec la fonction createToken()
: #🎜🎜#rrreee#🎜🎜#Ici, nous utilisez-le dans le modèle utilisateur Le trait HasApiTokens
est ajouté pour implémenter la fonction de jeton API dans le modèle utilisateur. Nous utilisons la méthode createToken
pour créer un jeton API et spécifions un nom facultatif et une clé d'autorisation autorisée lors de la création du jeton. #🎜🎜#- #🎜🎜#Routage API sécurisé #🎜🎜##🎜🎜##🎜🎜#Avec la clé API, nous pouvons l'injecter dans chaque demande d'authentification. Nous pouvons utiliser le middleware
sanctum
dans le fichier de routage de Laravel pour protéger la route API afin de vérifier le token dans la requête : #🎜🎜#rrreee#🎜🎜#Dans ce code, nous définissons Un groupe de routage contenant le middleware de validation sanctum
. Un groupe de routes contient une route qui ne nécessite qu'un jeton valide pour y accéder. #🎜🎜#- #🎜🎜#Utiliser le jeton Bearer #🎜🎜##🎜🎜##🎜🎜#Utiliser le jeton
Bearer
via HTTP Autorisation
en-tête pour envoyer un jeton API. Vous pouvez autoriser le jeton en ajoutant Authorization: Bearer {{$personalAccessToken->plainTextToken}}
à l'en-tête de la requête : #🎜🎜#rrreee- #🎜🎜#Revocation Jeton API#🎜🎜##🎜🎜##🎜🎜#Enfin, nous devons comprendre comment révoquer un jeton API. Nous pouvons utiliser la fonction
tokens()->delete()
pour supprimer tous les jetons API d'un utilisateur, ou utiliser la fonction revoke()
pour révoquer un seul jeton API. :#🎜🎜#rrreee#🎜🎜# Conclusion #🎜🎜##🎜🎜# Nous avons désormais implémenté avec succès l'authentification Sanctum pour protéger notre API. Sanctum et Laravel fournissent une authentification API simple mais puissante, qui permet aux développeurs de se concentrer sur la création d'API puissantes et de se concentrer principalement sur la logique métier. Lorsque vous utilisez Sanctum, il est fortement recommandé de lire attentivement la documentation officielle afin de bien comprendre le processus d'authentification de l'API et d'assurer la plus haute sécurité pour votre application. #🎜🎜#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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Méthode pour obtenir le code de retour lorsque l'envoi par e-mail de Laravel échoue. Lorsque vous utilisez Laravel pour développer des applications, vous rencontrez souvent des situations où vous devez envoyer des codes de vérification. Et en réalité ...

Laravel Schedule Tâche d'exécution de dépannage non réactif Lorsque vous utilisez la planification des tâches de calendrier de Laravel, de nombreux développeurs rencontreront ce problème: Schedule: Exécuter ...

La méthode de traitement de l'échec de l'e-mail de Laravel à envoyer le code de vérification est d'utiliser Laravel ...

Comment implémenter la fonction du tableau de Cliquez sur personnalisé pour ajouter des données dans DCATADMIN (Laravel-Admin) lors de l'utilisation de DCAT ...

L'impact du partage des connexions redis dans Laravel Framework et sélectionnez Méthodes Lors de l'utilisation de Laravel Framework et Redis, les développeurs peuvent rencontrer un problème: grâce à la configuration ...

Connexion de la base de données des locataires personnalisés dans le package d'extension multi-locataire Laravel Stancl / location Lors de la construction d'applications multi-locataires à l'aide du package d'extension multi-locataire Laravel Stancl / location, ...

Laravelelognent Model Retrieval: Faconttement l'obtention de données de base de données Eloquentorm fournit un moyen concis et facile à comprendre pour faire fonctionner la base de données. Cet article présentera en détail diverses techniques de recherche de modèles éloquentes pour vous aider à obtenir efficacement les données de la base de données. 1. Obtenez tous les enregistrements. Utilisez la méthode All () pour obtenir tous les enregistrements dans la table de base de données: usApp \ Modèles \ Post; $ poters = post :: all (); Cela rendra une collection. Vous pouvez accéder aux données à l'aide de Foreach Loop ou d'autres méthodes de collecte: ForEach ($ PostsAs $ POST) {echo $ post->

Traiter efficacement 7 millions d'enregistrements et créer des cartes interactives avec la technologie géospatiale. Cet article explore comment traiter efficacement plus de 7 millions d'enregistrements en utilisant Laravel et MySQL et les convertir en visualisations de cartes interactives. Exigences initiales du projet de défi: extraire des informations précieuses en utilisant 7 millions d'enregistrements dans la base de données MySQL. Beaucoup de gens considèrent d'abord les langages de programmation, mais ignorent la base de données elle-même: peut-il répondre aux besoins? La migration des données ou l'ajustement structurel est-il requis? MySQL peut-il résister à une charge de données aussi importante? Analyse préliminaire: les filtres et les propriétés clés doivent être identifiés. Après analyse, il a été constaté que seuls quelques attributs étaient liés à la solution. Nous avons vérifié la faisabilité du filtre et établi certaines restrictions pour optimiser la recherche. Recherche de cartes basée sur la ville
