Maison >développement back-end >tutoriel php >Implémentation de la vérification de sécurité PHP à l'aide de Laravel Passport

Implémentation de la vérification de sécurité PHP à l'aide de Laravel Passport

王林
王林original
2023-07-25 21:33:241522parcourir

Utilisez Laravel Passport pour implémenter la vérification de sécurité PHP

Introduction :
Dans le développement Web moderne, l'authentification et l'autorisation des utilisateurs sont des fonctions de sécurité très importantes. Laravel Passport est un outil d'authentification basé sur OAuth2 qui peut nous aider à implémenter facilement des fonctions d'authentification et d'autorisation des utilisateurs. Cet article explique comment implémenter une authentification sécurisée en PHP à l'aide de Laravel Passport.

Étapes :

  1. Installer Laravel Passport
    Tout d'abord, assurez-vous que le framework Laravel est installé. Ensuite, entrez le répertoire du projet dans le terminal et exécutez la commande suivante pour installer le package Laravel Passport :

    composer require laravel/passport

    Après une installation réussie, exécutez la commande suivante pour publier les fichiers et les migrations de bases de données requis pour le package :

    php artisan passport:install
  2. Configurer Passport
    Ouvrez le fichier config/app.php et ajoutez les fournisseurs de services suivants dans le tableau providers : config/app.php 文件,在 providers 数组中添加以下服务提供者:

    LaravelPassportPassportServiceProvider::class,

    然后,在 app/Http/Kernel.php 文件中的 $routeMiddleware 数组中,添加以下中间件:

    'client' => LaravelPassportHttpMiddlewareCheckClientCredentials::class,

    最后,在 app/User.php 文件中添加 PassportHasApiTokens trait:

    use LaravelPassportHasApiTokens;

    并在类的 trait 数组中引入:

    use HasApiTokens;

    现在,我们已经成功配置了 Laravel Passport。

  3. 创建用户认证接口
    首先,我们需要创建一个控制器来处理用户认证请求。可以执行以下命令来生成一个新的控制器:

    php artisan make:controller AuthController

    然后,在 AuthController 中添加以下方法来处理注册和登录请求:

    use IlluminateHttpRequest;
    use IlluminateSupportFacadesAuth;
    
    class AuthController extends Controller
    {
     public function register(Request $request)
     {
         // 验证请求数据
         $request->validate([
             'name' => 'required|unique:users',
             'email' => 'required|email|unique:users',
             'password' => 'required|min:6'
         ]);
    
         // 创建用户
         $user = User::create([
             'name' => request('name'),
             'email' => request('email'),
             'password' => bcrypt(request('password')),
         ]);
    
         // 生成访问令牌
         $token = $user->createToken('accessToken')->accessToken;
    
         // 返回响应
         return response()->json(['token' => $token], 200);
     }
    
     public function login(Request $request)
     {
         // 验证请求数据
         $credentials = request(['email', 'password']);
    
         // 检查用户凭据
         if (!Auth::attempt($credentials)) {
             return response()->json(['message' => 'Unauthorized'], 401);
         }
    
         // 获取当前用户
         $user = $request->user();
    
         // 生成访问令牌
         $token = $user->createToken('accessToken')->accessToken;
    
         // 返回响应
         return response()->json(['user' => $user, 'token' => $token], 200);
     }
    }
  4. 创建路由
    打开 routes/api.php 文件,并添加以下路由:

    Route::post('register', 'AuthController@register');
    Route::post('login', 'AuthController@login')->middleware('client');
  5. 使用 Passport 守卫
    打开 config/auth.php 文件,并将 api 守卫的驱动更改为 passport

    'guards' => [
     'api' => [
         'driver' => 'passport',
         'provider' => 'users',
     ],
    ],
  6. 使用认证用户
    现在,我们可以使用 auth:api 中间件来验证用户身份并保护相关的 API 路由。例如,在 AuthController 中,可以添加以下路由:

    public function profile()
    {
     $user = Auth::user();
    
     return response()->json(['user' => $user], 200);
    }

    然后,在 routes/api.php 中,添加以下路由:

    Route::get('profile', 'AuthController@profile')->middleware('auth:api');

    这样,在访问 /api/profilerrreee

    Ensuite, dans app/Http/Kernel. php Dans le tableau $routeMiddleware du fichier code>, ajoutez le middleware suivant :
  7. rrreee
Enfin, ajoutez Passportdans le app/User. Le trait <code>HasApiTokens du fichier php :

rrreee
et introduit dans le tableau trait de la classe :

rrreee🎜Maintenant, nous avons configuré avec succès Laravel Passport. 🎜🎜🎜🎜Créer une interface d'authentification utilisateur🎜Tout d'abord, nous devons créer un contrôleur pour gérer les demandes d'authentification des utilisateurs. Vous pouvez exécuter la commande suivante pour générer un nouveau contrôleur : 🎜rrreee🎜 Ensuite, ajoutez la méthode suivante dans AuthController pour gérer les demandes d'enregistrement et de connexion : 🎜rrreee🎜🎜🎜Créer des routes 🎜Ouvrir routes /api.php et ajoutez les routes suivantes : 🎜rrreee🎜🎜🎜Utilisez Passport guard 🎜Ouvrez le fichier config/auth.php et ajoutez le api guard Le pilote est remplacé par passport : 🎜rrreee🎜🎜🎜Utiliser des utilisateurs authentifiés🎜Maintenant, nous pouvons utiliser le middleware auth:api pour authentifier les utilisateurs et protéger les routes API associées. Par exemple, dans AuthController, vous pouvez ajouter la route suivante : 🎜rrreee🎜 Ensuite, dans routes/api.php, ajoutez la route suivante : 🎜rrreee🎜De cette façon , lors de l'accès à /api/profile, il sera demandé à l'utilisateur de fournir d'abord un jeton d'authentification valide. 🎜🎜🎜🎜Résumé : 🎜Cet article explique comment utiliser Laravel Passport pour implémenter la vérification de sécurité PHP. En installant et en configurant Laravel Passport, nous pouvons rapidement mettre en œuvre des fonctions d'authentification et d'autorisation des utilisateurs et protéger nos routes API. Espérons que cet article sera utile aux développeurs utilisant Laravel Passport pour l'authentification. 🎜

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