Maison > développement back-end > tutoriel php > Comment utiliser Laravel Passport pour implémenter l'authentification API

Comment utiliser Laravel Passport pour implémenter l'authentification API

不言
Libérer: 2023-04-03 08:22:01
original
2131 Les gens l'ont consulté

Cet article présente principalement comment utiliser Laravel Passport pour l'authentification API. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer

Installer Laravel

laravel new passport_demo
cd passport_demo && composer install
Copier après la connexion
.

Modifiez la configuration de la base de données dans .env selon votre propre configuration de base de données

 DB_DATABASE=homestead
 DB_USERNAME=homestead
 DB_PASSWORD=secret
Copier après la connexion

Installer Passport

composer require laravel/passport
php artisan migrate
php artisan passport:install
Copier après la connexion

Les erreurs suivantes peuvent se produire lors de l'exécution

Illuminate\Database\QueryException  : SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table `users` add unique `users_email_unique`(`email`))
Copier après la connexion

Editez

 namespace App\Providers;
 use Illuminate\Support\ServiceProvider;
 use Illuminate\Support\Facades\Schema;//新增
 class AppServiceProvider extends ServiceProvider{
     public function boot(){}
     public function register(){
         Schema::defaultStringLength(191);//新增
     }
 }
Copier après la connexion

puis exécutez ces deux commandes

php artisan migrate
php artisan passport:install
Copier après la connexion

Edit sera ajouté à

 namespace App;
 use Illuminate\Notifications\Notifiable;
 use Illuminate\Foundation\Auth\User as Authenticatable;
 use Laravel\Passport\HasApiTokens;//新增
 class User extends Authenticatable{
     use Notifiable;
     use HasApiTokens;//新增
     protected $fillable = ['name', 'email', 'password',];
     protected $hidden = ['password', 'remember_token',];
 }
Copier après la connexion

pour appeler la fonction dans la méthode

 namespace App\Providers;
 use Illuminate\Support\Facades\Gate;
 use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
 use Laravel\Passport\Passport;//新增
 class AuthServiceProvider extends ServiceProvider{
     protected $policies = ['App\Model' => 'App\Policies\ModelPolicy',];
     public function boot(){
         $this->registerPolicies();
         Passport::routes();//新增
     }
 }
Copier après la connexion
Modifiez l'option de garde d'autorisation dans le fichier de configuration en

//修改前
 'guards' => [
     'web' => [
         'driver' => 'session',
         'provider' => 'users',
     ],
     'api' => [
         'driver' => 'token',
         'provider' => 'users',
     ],
 ],
Copier après la connexion
// 修改后
 'guards' => [
     'web' => [
         'driver' => 'session',
         'provider' => 'users',
     ],
     'api' => [
         'driver' => 'passport',
         'provider' => 'users',
     ],
 ],
Copier après la connexion
Créez le fichier Le code ici provient d'un autre tutoriel.

 namespace App\Http\Controllers;
 use Illuminate\Http\Request;
 use App\Http\Controllers\Controller;
 use App\User;
 use Illuminate\Support\Facades\Auth;
 use Validator;
 class UserController extends Controller {
     public $successStatus = 200;
     public function login() {
         if(Auth::attempt(['email' => request('email'), 'password' => request('password')])) {
             $user = Auth::user();
             $success['token'] =  $user->createToken('MyApp')->accessToken;
             return response()->json(['success' => $success], $this->successStatus);
         }
         else{
             return response()->json(['error'=>'Unauthorised'], 401);
         }
     }
     public function register(Request $request) {
         $validator = Validator::make($request->all(), [
             'name' => 'required',
             'email' => 'required|email',
             'password' => 'required',
             'c_password' => 'required|same:password',
         ]);
         if ($validator->fails()) {
             return response()->json(['error'=>$validator->errors()], 401);
         }
         $input = $request->all();
         $input['password'] = bcrypt($input['password']);
         $user = User::create($input);
         $success['token'] =  $user->createToken('MyApp')->accessToken;
         $success['name'] =  $user->name;
         return response()->json(['success'=>$success], $this->successStatus);
     }
     public function details() {
         $user = Auth::user();
         return response()->json(['success' => $user], $this->successStatus);
     }
 }
Copier après la connexion
Utilisez Postman pour tester

Interface d'enregistrement, renvoyer le jeton et le nom d'utilisateur après une inscription réussie

Comment utiliser Laravel Passport pour implémenter lauthentification API

Interface de connexion


Comment utiliser Laravel Passport pour implémenter lauthentification API

Interface détaillée


Comment utiliser Laravel Passport pour implémenter lauthentification API

Recommandations associées :

À propos du processus d'installation et de configuration de Laravel octobre

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