Heim > Backend-Entwicklung > PHP-Tutorial > So verwenden Sie Laravel Passport zur Implementierung der API-Authentifizierung

So verwenden Sie Laravel Passport zur Implementierung der API-Authentifizierung

不言
Freigeben: 2023-04-03 08:22:01
Original
2179 Leute haben es durchsucht

Dieser Artikel stellt hauptsächlich vor, wie man Laravel Passport für die API-Authentifizierung verwendet. Jetzt kann ich ihn mit allen teilen, die ihn benötigen.

Larave installieren

laravel new passport_demo
cd passport_demo && composer install
Nach dem Login kopieren

Ändern Sie die Datenbankkonfiguration in .env an Ihre eigene Datenbankkonfiguration

 DB_DATABASE=homestead
 DB_USERNAME=homestead
 DB_PASSWORD=secret
Nach dem Login kopieren

Passport installieren

composer require laravel/passport
php artisan migrate
php artisan passport:install
Nach dem Login kopieren

Der folgende Fehler kann während der Ausführung auftreten

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`))
Nach dem Login kopieren

Bearbeiten

 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);//新增
     }
 }
Nach dem Login kopieren

Führen Sie dann diese beiden Befehle aus, um

php artisan migrate
php artisan passport:install
Nach dem Login kopieren

zu bearbeiten und zu

 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',];
 }
Nach dem Login kopieren

hinzuzufügen, um die Funktion in der Methode

 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();//新增
     }
 }
Nach dem Login kopieren

aufzurufen und die Optionen des Autorisierungsschutzes in der Konfiguration hinzuzufügen file Erstellen Sie stattdessen die Datei

//修改前
 'guards' => [
     'web' => [
         'driver' => 'session',
         'provider' => 'users',
     ],
     'api' => [
         'driver' => 'token',
         'provider' => 'users',
     ],
 ],
Nach dem Login kopieren
// 修改后
 'guards' => [
     'web' => [
         'driver' => 'session',
         'provider' => 'users',
     ],
     'api' => [
         'driver' => 'passport',
         'provider' => 'users',
     ],
 ],
Nach dem Login kopieren

, der Code hier stammt aus einem anderen Tutorial.

 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);
     }
 }
Nach dem Login kopieren

Verwenden Sie Postman zum Testen
Registrierungsschnittstelle, geben Sie Token und Benutzernamen nach erfolgreicher Registrierung zurück
So verwenden Sie Laravel Passport zur Implementierung der API-Authentifizierung

Anmeldeschnittstelle
So verwenden Sie Laravel Passport zur Implementierung der API-Authentifizierung

Details zur Benutzeroberfläche
So verwenden Sie Laravel Passport zur Implementierung der API-Authentifizierung

Verwandte Empfehlungen:

Über den Installations- und Konfigurationsprozess von Laravel October

Das obige ist der detaillierte Inhalt vonSo verwenden Sie Laravel Passport zur Implementierung der API-Authentifizierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Aktuelle Ausgaben
PHP-Datenerfassung?
Aus 1970-01-01 08:00:00
0
0
0
PHP-Erweiterung intl
Aus 1970-01-01 08:00:00
0
0
0
Wie man PHP gut lernt
Aus 1970-01-01 08:00:00
0
0
0
Mehrere PHP-Versionen
Aus 1970-01-01 08:00:00
0
0
0
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage