Laravel 5.2 : etwas Tun, nachdem der Benutzer sich angemeldet hat?
(Ich bin ein Anfänger von Laravel)
Ich bin mit Laravel 5.2
. Ich habe erfolgreich aktiviert die Authentifizierung, indem Sie die php artisan make:auth
und stopft.
Also mein login funktioniert.
Jetzt muss ich etwas tun, wenn schon jemand eingeloggt ist. Für ein einfaches Beispiel:
LOGIN:
- Sobald sich ein Benutzer angemeldet hat, schreibt einen Wert in die Session.
- Zum Beispiel:
$request->session()->put('UserAgent', $ClientUserAgent);
LOGOUT:
- Gleiche Sache zu tun, sobald sich ein Benutzer abgemeldet hat, löschen Sie die benutzerdefinierten Session-Wert.
- Zum Beispiel:
$request->session()->forget('UserAgent');
Ich bin mir nicht sicher, ob es (Dinge wie) hooks
oder Event Listeners
, Event Handlers
oder sowas.
Wie kann ich es tun bitte?
- Könnte, fügen Sie es an die Steuerung, wo auch immer, Sie werden immer umgeleitet zu: nach der Anmeldung / Registrierung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für neuere Versionen von Laravel
Wenn Sie nur tun, etwas sehr einfaches erstellen anschließend einen Ereignis-handler scheint übertrieben zu mir. Laravel hat eine leere Methode enthalten, die in der
AuthenticatesUsers
Klasse für diesen Zweck.Legen Sie einfach die folgende Methode innerhalb
app\Http\Controllers\LoginController
(überschreibt es):Für die post-login, können Sie tun, indem geändert wird, App/Http/Controllers/Auth/AuthController.php
Hinzufügen authentifiziert() in dieser Klasse überschreiben die Voreinstellung:
Gehören auch diese in der Klasse:
Für den logout, fügen Sie diese Funktion in der gleichen Klasse:
Und auch diese in der Klasse:
ErrorException in AuthController.php line 98: Argument 1 passed to App\Http\Controllers\Auth\AuthController::authenticated() must be an instance of App\Http\Controllers\Auth\Request, instance of Illuminate\Http\Request given, called in /var/www/html/example.com/vendor/laravel/framework/src/Illuminate/Foundation/Auth/AuthenticatesUsers.php on line 115 and defined
dd($user)
es nicht zeigen Sie mir den authentifizierten Benutzer.Könnten Sie versuchen, das einrichten von Ereignis-Listenern für das Auth-Ereignisse, die ausgelöst werden.
Können Sie setup einen listener, der Listener für
Illuminate\Auth\Events\Login
zu handhaben, was Sie brauchen-post-login-undIlluminate\Auth\Events\Logout
für post Abmelden.Laravel Docs - Authentifizierung - Veranstaltungen
'Illuminate\Auth\Events\Login' => ['App\Listeners\UserLoggedIn'],
kann ich nicht schreiben Sitzung von meinemapp\Listeners\UserLoggedIn.php
- Datei. In der Funktionpublic function handle(Login $event) { ... }
. Die Sitzung kann nicht veranlasst werden von dort aus.Alief Antwort unten funktioniert gut, wie erwartet. Aber als ich gegooglet durch, mit dem Event-Handler ist wahrscheinlich der bevorzugte Weg. (Es funktioniert wie benutzerdefinierte Haken).
Also ohne weniger Respekt zu Alief Antwort unten, lassen Sie mich wählen --> dieses Ereignis Linkshänder Ansatz ich gerade herausgefunden.
Danke an alle mit GRÜßEN!
Wenn Sie testen, mit
authenticated(Request $request, User $user)
Methode verwenden Sie keine alert-innerhalb dieser Methode zu testen,, wird es nicht zeigen, ohne Ergebnis, also besser gesagt einige insert-Abfrage oder sowas zum testen dieser Methode.Warum nicht einfach überprüfen
Stellen Sie sicher, dass Sie
use Auth;
routes.php
?) Aber dann, wie eigentlich mit denLogin
, und auchLogout
Veranstaltungen mit diesem, plsss?