国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Table des matières
étape 1. Installez Laravel
étape 2. Installer le package Laravel Passport
DatabaseMigration" >étape 3. Exécutez DatabaseMigration
étape 4. Générer une clé secrète
第五步 . Passport 配置
第六步. 添加 API 路由
第七步: 創(chuàng)建控制器
Déconnexion
Maison développement back-end tutoriel php Gérer l'authentification API avec Laravel Passport

Gérer l'authentification API avec Laravel Passport

Apr 03, 2024 pm 01:50 PM
jquery seo Programmation PHP Développement backend Portée addclass

使用 Laravel Passport 處理 API 認證

L'éditeur de PHP vous fera découvrir l'utilisation de Laravel Passport pour gérer l'authentification API. Laravel Passport est une implémentation complète du serveur OAuth2 qui peut aider les développeurs à mettre en ?uvre facilement l'authentification API et fournit de nombreuses fonctions pratiques. A travers cet article, vous apprendrez à utiliser Laravel Passport pour gérer l'authentification des utilisateurs API et assurer la sécurité de l'interface API.

étape 1. Installez Laravel

Nous devons utiliser la commande suivante pour créer une dernière application Laravel, veuillez donc ouvrir le terminal et exécuter?:

laravel new auth

étape 2. Installer le package Laravel Passport

Laravel Passport peut être utilisé dans un quelques minutes Votre application implémente un serveur OAuth2 complet.

composer require laravel/passport

La migration de passeport créera les tables utilisées par votre application pour stocker les clients et les jetons d'accès.

PHP artisan migrate

étape 4. Générer une clé secrète

Cette commande créera une clé secrète pour générer un jeton d'accès sécurisé. De plus, il créera également un accès personnel et un passGrantWord utilisé pour générer le jeton d'accès?:

php artisan passport:install

Après l'exécution, ajoutez LaravelPassportHasApiTokens trLaravelPassportHasApiTokens trait 添加到你的 AppUser 模型中。這個 trait 會為模型添加一系列助手函數(shù)用來驗證用戶的秘鑰和作用域:

第五步 . Passport 配置

<?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Laravel\Passport\HasApiTokens;

class User extends Authenticatable
{
    use Notifiable, HasApiTokens;
}

接下來,你應(yīng)該在 AuthServiceProvider 中的 boot 方法中調(diào)用 Passport::routes 方法。這個方法會注冊必要的路由去頒發(fā)訪問令牌,撤銷訪問令牌,客戶端和個人令牌:

<?php

namespace App\Providers;

use Laravel\Passport\Passport;
use Illuminate\Support\Facades\Gate;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;

class AuthServiceProvider extends ServiceProvider
{
    
    protected $policies = [
        &#39;App\Model&#39; => &#39;App\Policies\ModelPolicy&#39;,
    ];

    
    public function boot()
    {
        $this->reGISterPolicies();

        Passport::routes();
    }
}

最后,在 config/auth.php 配置文件中,你應(yīng)該設(shè)置 api 權(quán)限認證守衛(wèi)的 driver 選項為 passport。當需要權(quán)限認證的 API 請求進來時會告訴你的應(yīng)用去使用 Passport's 的 TokenGuard

&#39;guards&#39; => [
    &#39;WEB&#39; => [
        &#39;driver&#39; => &#39;session&#39;,
        &#39;provider&#39; => &#39;users&#39;,
    ],
    &#39;api&#39; => [
        &#39;driver&#39; => &#39;passport&#39;,
        &#39;provider&#39; => &#39;users&#39;,
    ],
],

第六步. 添加 API 路由

Laravel 提供了 routes/api.php 文件來給我們編寫 web 路由,因此在這個文件添加新的路由即可。

<?php

use Illuminate\Http\Request;

Route::group([
    &#39;prefix&#39; => &#39;auth&#39;
], function () {
    Route::post(&#39;login&#39;, &#39;AuthController@login&#39;);
    Route::post(&#39;signup&#39;, &#39;AuthController@signup&#39;);

    Route::group([
      &#39;middleware&#39; => &#39;auth:api&#39;
    ], function() {
        Route::get(&#39;loGout&#39;, &#39;AuthController@logout&#39;);
        Route::get(&#39;user&#39;, &#39;AuthController@user&#39;);
    });
});

第七步: 創(chuàng)建控制器

最后一步我們必須創(chuàng)建新的控制器和 api 方法。因此我們先創(chuàng)建 AuthControllerai

t dans votre Modèle AppUser. Ce trait ajoutera une série de fonctions d'assistance au modèle pour vérifier la clé secrète et la portée de l'utilisateur?:

étape 5. Configuration du passeport

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Carbon\Carbon;
use App\User;

class AuthController extends Controller
{
    
    public function signup(Request $request)
    {
        $request->validate([
            &#39;name&#39; => &#39;required|string&#39;,
            &#39;email&#39; => &#39;required|string|email|unique:users&#39;,
            &#39;password&#39; => &#39;required|string|confirmed&#39;
        ]);

        $user = new User([
            &#39;name&#39; => $request->name,
            &#39;email&#39; => $request->email,
            &#39;password&#39; => bcrypt($request->password)
        ]);

        $user->save();

        return response()->JSON([
            &#39;message&#39; => &#39;Successfully created user!&#39;
        ], 201);
    }

    
    public function login(Request $request)
    {
        $request->validate([
            &#39;email&#39; => &#39;required|string|email&#39;,
            &#39;password&#39; => &#39;required|string&#39;,
            &#39;remember_me&#39; => &#39;boolean&#39;
        ]);

        $credentials = request([&#39;email&#39;, &#39;password&#39;]);

        if(!Auth::attempt($credentials))
            return response()->json([
                &#39;message&#39; => &#39;Unauthorized&#39;
            ], 401);

        $user = $request->user();

        $tokenResult = $user->createToken(&#39;Personal Access Token&#39;);
        $token = $tokenResult->token;

        if ($request->remember_me)
            $token->expires_at = Carbon::now()->addWeeks(1);

        $token->save();

        return response()->json([
            &#39;access_token&#39; => $tokenResult->accessToken,
            &#39;token_type&#39; => &#39;Bearer&#39;,
            &#39;expires_at&#39; => Carbon::parse(
                $tokenResult->token->expires_at
            )->toDateTimeString()
        ]);
    }

    
    public function logout(Request $request)
    {
        $request->user()->token()->revoke();

        return response()->json([
            &#39;message&#39; => &#39;Successfully logged out&#39;
        ]);
    }

    
    public function user(Request $request)
    {
        return response()->json($request->user());
    }
}
Ensuite, vous devez dans <code>AuthServiceProvider Le Passport::routes est appelée dans la méthode >boot. Cette méthode enregistrera les routes nécessaires pour émettre des jetons d'accès, révoquer les jetons d'accès, les jetons client et personnels?:
php artisan serve

Enfin, dans le fichier de configuration config/auth.php, vous devez définir le L'option du pilote du garde d'authentification des autorisations api est passport. Lorsqu'une requête API nécessitant une authentification par autorisation arrive, votre application sera invitée à utiliser le TokenGuard de Passport.
Content-Type: application/json
X-Requested-With: XMLHttpRequest
étape 6. Ajouter une route API

Laravel fournit le fichier routes/api.php pour que nous puissions écrire des routes Web, il suffit donc d'ajouter une nouvelle route dans ce fichier. rrreeeétape 7?: Créer un contr?leur

Dans la dernière étape, nous devons créer de nouvelles méthodes de contr?leur et d'API. Nous créons donc d'abord AuthController et y mettons le code?:

rrreee

Maintenant, nous sommes prêts à exécuter notre exemple, exécutez la commande suivante pour l'exécuter rapidement?:

使用 Laravel Passport 處理 API 認證rrreee

Test

使用 Laravel Passport 處理 API 認證

Désormais, nous pouvons utiliser le client REST

tools

pour simplifier les tests, comme Postman. J'ai exécuté le test et vous pouvez voir la capture d'écran ci-dessous.

使用 Laravel Passport 處理 API 認證

Vous devez définir les deux informations d'en-tête suivantes pour cette API?:

rrreee

使用 Laravel Passport 處理 API 認證

Register

使用 Laravel Passport 處理 API 認證


Connexion

Déconnexion

  • Utilisation r
??Merci à lire ! ??????Ressources????????GitHub????????Collections Postman??????

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 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

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Sujets chauds

Tutoriel PHP
1502
276
Utilisation de la structure typedef en langage C Utilisation de la structure typedef en langage C May 09, 2024 am 10:15 AM

typedef struct est utilisé en langage C pour créer des alias de type de structure afin de simplifier l'utilisation des structures. Il crée un alias pour un nouveau type de données sur une structure existante en spécifiant l'alias de la structure. Les avantages incluent une lisibilité améliorée, la réutilisation du code et la vérification du type. Remarque : La structure doit être définie avant d'utiliser un alias. L'alias doit être unique dans le programme et valide uniquement dans le périmètre dans lequel il est déclaré.

Avantages et inconvénients des fermetures en js Avantages et inconvénients des fermetures en js May 10, 2024 am 04:39 AM

Les avantages des fermetures JavaScript incluent le maintien d'une portée variable, l'activation du code modulaire, l'exécution différée et la gestion des événements ; les inconvénients incluent les fuites de mémoire, la complexité accrue, la surcharge de performances et les effets de cha?ne de portée.

Que signifie inclure en C++ Que signifie inclure en C++ May 09, 2024 am 01:45 AM

La directive de préprocesseur #include en C++ insère le contenu d'un fichier source externe dans le fichier source actuel, en copiant son contenu à l'emplacement correspondant dans le fichier source actuel. Principalement utilisé pour inclure des fichiers d'en-tête contenant les déclarations nécessaires dans le code, telles que #include <iostream> pour inclure des fonctions d'entrée/sortie standard.

Pointeurs intelligents C++ : une analyse complète de leur cycle de vie Pointeurs intelligents C++ : une analyse complète de leur cycle de vie May 09, 2024 am 11:06 AM

Cycle de vie des pointeurs intelligents C++ : Création : Les pointeurs intelligents sont créés lors de l'allocation de mémoire. Transfert de propriété?: Transférer la propriété via une opération de déménagement. Libération?: la mémoire est libérée lorsqu'un pointeur intelligent sort de la portée ou est explicitement libéré. Destruction d'objet?: lorsque l'objet pointé est détruit, le pointeur intelligent devient un pointeur invalide.

Pointeurs intelligents C++?: des bases à l'avancé Pointeurs intelligents C++?: des bases à l'avancé May 09, 2024 pm 09:27 PM

Les pointeurs intelligents sont des pointeurs spécifiques au C++ qui peuvent automatiquement libérer des objets de mémoire tas et éviter les erreurs de mémoire. Les types incluent?: unique_ptr?: propriété exclusive, pointant vers un seul objet. shared_ptr : propriété partagée, permettant à plusieurs pointeurs de gérer des objets en même temps. faible_ptr?: référence faible, n'augmente pas le nombre de références et évite les références circulaires. Utilisation?: utilisez make_unique, make_shared et make_weak de l'espace de noms std pour créer des pointeurs intelligents. Les pointeurs intelligents libèrent automatiquement la mémoire des objets à la fin de la portée. Utilisation avancée?: vous pouvez utiliser des suppresseurs personnalisés pour contr?ler la manière dont les objets sont libérés. Les pointeurs intelligents peuvent gérer efficacement les tableaux dynamiques et empêcher les fuites de mémoire.

Définition du nom de la fonction dans le langage C Définition du nom de la fonction dans le langage C Apr 03, 2025 pm 10:03 PM

La définition du nom de fonction du langage C comprend: Type de valeur de retour, nom de fonction, liste de paramètres et corps de fonction. Les noms de fonction doivent être clairs, concis et unifiés dans le style pour éviter les conflits avec les mots clés. Les noms de fonction ont des lunettes et peuvent être utilisés après la déclaration. Les pointeurs de fonction permettent de passer des fonctions ou d'attribuer des arguments. Les erreurs communes incluent les conflits de dénomination, l'inadéquation des types de paramètres et les fonctions non déclarées. L'optimisation des performances se concentre sur la conception et la mise en ?uvre des fonctions, tandis que le code clair et facile à lire est crucial.

Fuites de mémoire dans les applications PHP : causes, détection et résolution Fuites de mémoire dans les applications PHP : causes, détection et résolution May 09, 2024 pm 03:57 PM

Une fuite de mémoire PHP se produit lorsqu'une application alloue de la mémoire et ne parvient pas à la libérer, ce qui entra?ne une réduction de la mémoire disponible du serveur et une dégradation des performances. Les causes incluent les références circulaires, les variables globales, les variables statiques et l'expansion. Les méthodes de détection incluent Xdebug, Valgrind et PHPUnitMockObjects. Les étapes de résolution sont les suivantes?: identifier la source de la fuite, réparer la fuite, tester et surveiller. Des exemples pratiques illustrent les fuites de mémoire causées par des références circulaires et des méthodes spécifiques pour résoudre le problème en cassant les références circulaires via des destructeurs.

Comment résoudre le problème de la fermeture d'Oracle Cursor Comment résoudre le problème de la fermeture d'Oracle Cursor Apr 11, 2025 pm 10:18 PM

La méthode pour résoudre le problème de fermeture du curseur Oracle comprend: la fermeture explicite du curseur à l'aide de l'instruction Close. Déclarez le curseur dans la clause de mise à jour pour la fermeture automatiquement après la fin de la portée. Déclarez le curseur dans la clause d'utilisation afin qu'il se ferme automatiquement lorsque la variable PL / SQL associée est fermée. Utilisez la gestion des exceptions pour vous assurer que le curseur est fermé dans toute situation d'exception. Utilisez le pool de connexion pour fermer automatiquement le curseur. Désactiver la soumission automatique et le délai de fermeture du curseur.

See all articles