Ein Hasher wurde dem Benutzer nicht zur Verfügung gestellt

7

Ich kann nicht scheinen, dass die Wache funktioniert. Ich bekomme immer wieder diesen Fehler: A hasher has not been provided for the user. Weiß jemand, was das bewirken würde?

Ich betreibe MAMP unter OS X 10.9. Ich benutze PHP 5.4.4 MCrypt ist installiert und aktiviert. Dieser Fehler tritt auf, wenn das Kennwort beim Erstellen eines neuen Benutzers durchsucht werden soll. Unser Projekt verwendet das Laravel Sentry Plugin. Hier ist der Controller:

%Vor%     
jamespick 14.12.2013, 19:19
quelle

4 Antworten

13

Das Problem ist, wenn Sie Sentry so konfiguriert haben, dass sie User.php als Modell verwendet, verliert sie den Sentry-Hasher. Die Lösung besteht darin, den Hasher zu setzen, wenn ein Benutzer sich registriert

%Vor%     
Dylan Pierce 14.12.2013, 19:31
quelle
4

Eine bessere Alternative zum Vorschlag von @Dylan Pierce ist, den Hasher direkt im Konstruktor Ihres Benutzermodells zu setzen.

%Vor%

Beachten Sie, dass es verschiedene andere Hashes von Sentry gibt, die Sie in diesem Verzeichnis finden können: vendor/cartalyst/sentry/src/Cartalyst/Sentry/Hashing/

Vollständiges Beispiel:

%Vor%     
Mahmoud Zalt 15.12.2014 19:51
quelle
2

Wenn Sie die setHasher-Methode für das gesamte Modell verwenden möchten; Um die eloquente Klassenkonstruktorfunktion zu erhalten, verwenden Sie die statische Methode 'boot', die von der Eloquent-Konstruktorklasse ausgeführt wird:

%Vor%     
browno 05.01.2015 16:04
quelle
1

Die beste Methode besteht darin, die Eloquent-Boot-Funktion zu verwenden (wie von @browno vorgeschlagen), aber auch den Hasher der übergeordneten Klasse zu verwenden, sodass die Sentry-Konfigurationseinstellung für den Hasher weiterhin verwendet wird. Denken Sie auch daran, die Eltern-Boot-Funktion aufzurufen, sonst wird es wahrscheinlich Dinge brechen. Beispielcode:

%Vor%     
developerbmw 23.06.2015 03:55
quelle