5.2 Authentifizierung Laravel der Verwendung zeigen die Dokumente, dass ich wie so mehr Bedingungen an eine Authentifizierungs-Abfrage hinzufügen:Laravel Authentifizierung zusätzliche Bedingungen mit einem anderen Modell
Zusätzliche Bedingungen angeben
Wenn Sie möchten, können Sie auch kann der Authentifizierungsabfrage zusätzlich zur E-Mail-Adresse und zum Kennwort des Benutzers zusätzliche Bedingungen hinzufügen. Zum Beispiel können wir, dass Benutzer markiert als "aktiv" überprüfen:
if (Auth::attempt(['email' => $email, 'password' => $password, 'active' => 1])) {
// The user is active, not suspended, and exists.
}
In meinem Fall würde Ich mag einen Zustand setzen, die in einer anderen many-to-many Eloquent Modell lebt:
class Account extends Model
{
public function users() {
return $this->belongsToMany('App\User', 'account_users');
}
}
class User extends Model implements AuthenticatableContract
{
public function accounts() {
return $this->belongsToMany('App\Account', 'account_users');
}
}
es gibt ein Konto id
die zwar eine Middleware übergeben wird und ich auf sie wie folgt aus:
$request->account
Wie implementiere ich das ne w Zustand, wenn es sich auf ein verwandtes Modell bezieht? Ich weiß einfach nicht, wie ich die ORM-Beziehung nutzen soll. Jede Hilfe, die in die richtige Richtung zeigt, wird sehr geschätzt!
können Sie einfach implementieren diese Logik/Check in der gleichen if-Anweisung in dem Sie Auth :: Versuch() verwenden. Sie können das zugehörige Modell überprüfen (unter der Annahme, dass es in diesem Fall ein Konto ist) $ request-> user() -> accounts() -> wherePivot ('account_id', $ request-> account); –
@CanCelik du meinst als separate Bedingung im 'if'? Nicht ein Teil des '$ credentials' Param von' versuch() '? – greener
das ist richtig. Die Methode propf() hat eine dritte Option, bei der Sie false setzen können, damit der Benutzer nicht angemeldet wird, wenn die andere Bedingung nicht erfüllt ist. –