2017-06-27 4 views
0

Ich bin ziemlich verzweifelt mit Laravel 5.4 und Eloquent Query Builder. Ich versuche, einen Benutzer mit Benutzernamen und Passwort abzurufen.Eloquenter Abfragefehler

Ich habe folgende Spalten in meiner db: ID, Benutzername, Passwort

Abfrage Es folgt für mich arbeiten:

$user = UserModel::where(['username' => $username])->first(); 

während dieses ist nicht:

$user = UserModel::where(['password' => $password])->first(); 

Ich bin Drucken beide $username und $password vor der Abfrage, und beide sind genau das, was sie sein sollten.

Was kann ich möglicherweise falsch machen?

EDIT:

  • Ja ich speichern Passwort wirklich im Klartext.
  • Das Verfahren ist ein Teil der API basiert auf Zend-XMLRPC-Server
  • PHP einen Fehler oder Ausnahmen
  • XMLRPC Server return "404 unbekannter Fehler" Störreaktion nicht zurück.
  • Ja bin ich sicher, dass Werte keine unsichtbaren Zeichen enthalten und in der Tat korrekt sind.
  • Werte sind in Anfrage hart codiert, ich habe auch versucht, sie direkt in Abfrage mit dem gleichen Ergebnis zu codieren.
  • Ich benutze Oracle (11g glaube ich), Laravel 5.4, PHP 5.6
  • Wertpaar ist korrekt, dieser Benutzername gehört zu diesem Passwort und beide sind genau in der gleichen Form wie in der Datenbank.

Ich habe versucht, folgende Formen von Abfragen mit gleichen Ergebnissen:

$user = UserModel::where('password', $password)->first(); 
$user = UserModel::where(['password' => $password])->first(); 
$user = UserModel::where('password', '=', $password)->first(); 

Variationen mit Benutzername führen zu genau gleichen Ergebnisse wie in der ersten erwähnt.

+1

Speichern Sie Passwörter wirklich im Klartext? –

+0

Ok. Die Sache ist, wenn der erste bekommt, was Sie wollen, während der zweite nicht, dann ist es eher ein "es kann es eigentlich nicht finden" anstatt "es gibt einen Fehler". – apokryfos

+0

Ja, ich tue, es ist eine schlechte Übung, aber das ist nur Testfall, nicht Produktion. –

Antwort

0

Problem gelöst althought ersten Eingangs Hash muss ich nicht ganz sicher bin, was sie verursacht. Problem war, dass Eloquent mit oci8 Treiber (Oracle-Treiber) konvertiert alle Spaltennamen in Großbuchstaben, aber "Passwort" ist eine Art von reservierten Schlüsselwort und konnte nicht konvertiert werden und blieb in Kleinbuchstaben. Während Oracle Groß- und Kleinschreibung beachtet (für Spalten- und Tabellennamen), funktionierte es nicht. Ich änderte den Namen der "Passwort" -Spalte in "Passphrase" und alles funktionierte sofort.

0

Die Passwörter werden nicht im Klartext gespeichert, so dass Sie

$password = Hash::make('plaintext'); 
$result = User::wherePassword($password)->first(); 
+0

Passwörter werden im Klartext gespeichert. Sie sollten nicht sein, aber sie sind es. –

+0

Probieren Sie diesen Benutzer aus: where ('password', $ password) -> first(); –

+0

Ich habe keinen Erfolg, siehe bearbeitete Frage. –

Verwandte Themen