ich die benutzerdefinierte Authentifizierung benötigen, und zwar:Laravel: das Verständnis das "Credentials" Methode Mechanismus
- Benutzerdefinierte Modell und DB-Tabelle für
LoginController
(gelöst) - "Order ID" anstelle von E-Mail für die Authentifizierung (gelöst)
Weil ich die credentials
Methode Mechanismus nicht verstehen, erhalte ich die Fehlermeldung:
Type error: Argument 1 passed to Illuminate\Auth\EloquentUserProvider::validateCredentials()
must be an instance of Illuminate\Contracts\Auth\Authenticatable,
instance of App\Order given, called in C:\OpenServer\domains\sites-in-development.loc\vendor\laravel\framework\src\Illuminate\Auth\SessionGuard.php on line
<?php
class LoginController extends Controller {
use AuthenticatesUsers;
protected $redirectTo;
protected $orderAlias;
protected $loginView;
/*
Here I set the order ID as "username". I don't like this method,
because it causes the confusion ($username is actually order ID),
but don't know the other way yet.
REF is just the class with array contains the string values to avoid hardcoding
*/
protected $username = REF::tables['orders']['fieldNames']['orderId'];
public function __construct() {
$this->middleware('guest')->except('logout');
$this->loginView = '00_top';
}
public function showLoginForm() {
// Work properly
}
public function login(Request $request) {
if ($this->hasTooManyLoginAttempts($request)) {
$this->fireLockoutEvent($request);
return $this->sendLockoutResponse($request);
}
// manual validation (work properly)
// getting $orderAlias from DB
$redirectTo = '/'.$orderAlias;
if ($this->attemptLogin($request)) {
return $this->sendLoginResponse($request); // to "credentials"...
}
$this->incrementLoginAttempts($request);
return $this->sendFailedLoginResponse($request);
}
protected function credentials(Request $request) {
// here is error
return $request->only(REF::forms['loginToOrder']['fieldNames']['orderID'],
REF::forms['loginToOrder']['fieldNames']['password']);
}
}
Sie versuchen, eine ‚Ordnung‘ als ‚Nutzer‘ anmelden? – lagbox
@lagbox, was meinst du? Ich logge mich mit 'Bestellungen' Tabelle, 'ID' bestellen statt 'E-Mail' zu authentifizieren, und ich löschte 'Benutzer' Tabelle. Ich setze die "Bestell-ID" als "$ username" - sie ist für Authentifizierungsmethoden erforderlich (fast alle Methoden von "AuthenticatesUsers" funktionieren mit E-Mail als ID zum Anmelden). Eigentlich möchte ich eine vollständig manuelle Authentifizierung, aber ich weiß nicht, wie ich mich anmelden kann, wenn ich umadressiere (ich dachte darüber nach in [this] (https://stackoverflow.com/questions/47425457/laravel-keep-login-authenticated- Status-manuell) Frage, aber immer noch keine Antworten). –