Ich war auch mit diesem Problem konfrontiert, bis ich erkannte, dass mein Verständnis des Arbeitsprinzips des Passes falsch ist.
Passport dient dazu, einer Clientanwendung die Daten eines Benutzers mit der Zustimmung des Benutzers zu erteilen (auf diese Weise funktioniert OAuth2). Wenn also eine Client-Anwendung versucht, das Zugriffstoken zu erhalten, das schließlich Zugriff auf die Daten dieses Benutzers gewährt, muss die Zustimmung des Benutzers eingeholt werden. Die Web-Middleware dient als eine Ebene, um die Zustimmung des Benutzers zu übernehmen. Um die Zustimmung zu unterschreiben, muss sich der Benutzer zuerst anmelden oder es gibt keinen Beweis, dass es sich um einen tatsächlichen Benutzer handelt.
Um besser zu verstehen, überlegen Sie sich ein Szenario, in dem Ihre App versucht, die Funktion "Mit Google anmelden" zu implementieren. Sie legen eine Schaltfläche fest, die auf Ihrer Anmeldeseite zu Google weiterleitet, nach der Weiterleitung die Benutzeranmeldung in ihrem Google-Konto, unterschreiben Sie eine Zustimmung und wird mit einem Autorisierungscode zurück zu Ihrer App weitergeleitet. Dies ist genau so, hier ist Google die App, die Sie erstellen und die andere App ist die Client-App.
Noch der beste Weg, dies zu verstehen, wenn eine praktische Umsetzung. Erstellen Sie einfach eine neue App in Laravel und fügen Sie diesen Code in die Datei routes/web.php ein.
Route::get('/redirect', function() {
$query = http_build_query([
'client_id' => 'YOUR APP'S CLIENT ID',
'redirect_uri' => 'THE CALLBACK YOU GAVE DURING CREATING THE CLIENT',
'response_type' => 'code',
'scope' => '',
]);
return redirect('http://your-app.com/oauth/authorize?'.$query);
});
Dann besuchen Sie die neue App mit der /redirect
Route. Stellen Sie sicher, dass Ihre Haupt-App auch läuft.
Leider hat mir das überhaupt nicht geholfen. Es wurde lediglich die Middleware zu der bereits vorhandenen Liste der Middleware hinzugefügt. Anstatt also die Middleware von "web, auth" zu "cors" zu ändern, habe ich "cors, web, auth" bekommen. Es scheint ein bisschen weit draußen, um Auth auf die Sache zu tun, die Sie authentifizieren soll :-) –