Während des Login-Prozesses von Laravel Spark muss ich ein Token einer Remote-API anfordern. Diese API speichert genau die gleichen Benutzer und Passwörter wie die Spark-Anwendung von Laravel. Daher muss ich den Benutzernamen und das nicht gehashte Passwort des Benutzers während der Authentifizierung erhalten.Kann Laravel Spark-Authentifizierung mit eigener Implementierung nicht überschreiben
Ich dachte, das Überschreiben der authentifizierten Methode wäre die Lösung für mein Problem. In Routen/web.php ich die POST /login
Endpunkt außer Kraft setzen und am Zeige diesen Endpunkt zu meinem eigenen LoginController:
<?php
namespace App\Http\Controllers\Auth;
use Illuminate\Support\Facades\Log;
use Illuminate\Http\Request;
use Laravel\Spark\Http\Controllers\Auth\LoginController as SparkLoginController;
class LoginController extends SparkLoginController
{
/**
* Create a new login controller instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Handle a successful authentication attempt.
*
* @param Request $request
* @param \Illuminate\Contracts\Auth\Authenticatable $user
* @return Response
*/
public function authenticated(Request $request, $user)
{
Log::info('authenticated method in LoginController has been called');
return parent::authenticated($request, $user);
}
}
Implementierung löst eine Missing argument 2 for App\Http\Controllers\Auth\LoginController::authenticated()
Ausnahme. Irgendwie gibt Laravel keinen Benutzer im Parameter $ user weiter. Diese Ausnahme wird ausgelöst, egal was ich mache. Selbst wenn ich die Methode aus meinem LoginController entferne, wird dieselbe Ausnahme im Spark LoginController ausgelöst.
Wenn ich meine /login
Endpunkt deaktivieren und melden Sie sich die $ Anfrage und $ Benutzerparameter des authentifizierten Methode in die Spark LoginController, sehe ich, dass $ Anfrage enthält Illuminate\Http\Request::__set_state(array(...))
und $ user enthält App\User::__set_state(array())
. Wenn ich das gleiche in meinem eigenen Controller $ Anfrage protokolliert enthält Illuminate\Http\Request::__set_state(array(...))
und $ Benutzer ist nicht bestanden.