Maison >développement back-end >tutoriel php >Comment utiliser Laravel Passport pour implémenter l'authentification API
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.
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
Installer Passport
composer require laravel/passport php artisan migrate php artisan passport:install
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`))
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);//新增 } }
puis exécutez ces deux commandes
php artisan migrate php artisan passport:install
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',]; }
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();//新增 } }Modifiez l'option de garde d'autorisation dans le fichier de configuration en
//修改前 'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'api' => [ 'driver' => 'token', 'provider' => 'users', ], ],
// 修改后 'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'api' => [ 'driver' => 'passport', 'provider' => 'users', ], ],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); } }Utilisez Postman pour tester
Interface d'enregistrement, renvoyer le jeton et le nom d'utilisateur après une inscription réussie
À 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!