web-dev-qa-db-fra.com

Laravel 5.2: Faire quelque chose après que l'utilisateur s'est connecté?

(je suis un débutant de Laravel)

J'utilise Laravel 5.2. J'ai réussi à activer l'authentification; en faisant le php artisan make:auth et les trucs.

Donc, ma connexion fonctionne.

Maintenant, je dois faire quelque chose une fois que quelqu'un s'est connecté. Pour un exemple simple:

S'IDENTIFIER:

  • Une fois qu'un utilisateur s'est connecté, écrivez une valeur dans Session.
  • Par exemple: $request->session()->put('UserAgent', $ClientUserAgent);

SE DÉCONNECTER:

  • Même chose à faire, une fois qu'un utilisateur s'est déconnecté, supprimez la valeur de session personnalisée.
  • Par exemple: $request->session()->forget('UserAgent');

Je ne sais pas s'il y a (des choses comme) hooks ou Event Listeners, Event Handlers, Ou quelque chose comme ça.

Comment puis-je le faire s'il vous plaît?

24
夏期劇場

Réponse d'Alief ci-dessous fonctionne très bien comme prévu. Mais comme je l'ai parcouru, l'utilisation des gestionnaires d'événements est probablement la façon la plus préférée. (Cela fonctionne comme des crochets personnalisés).

Donc sans moins de respect pour la réponse d'Alief ci-dessous, permettez-moi de choisir -> cette approche des gestionnaires d'événements je viens de le découvrir.

Merci à tous!

1
夏期劇場

Pour les nouvelles versions de Laravel

Si vous ne faites que quelque chose de très simple, la création d'un gestionnaire d'événements me semble exagérée. Laravel a une méthode vide incluse dans la classe AuthenticatesUsers à cet effet.

Placez simplement la méthode suivante dans app\Http\Controllers\LoginController (en le remplaçant):

protected function authenticated(Request $request, $user)
{
    // stuff to do after user logs in
}
21
kjdion84

Pour la connexion post, vous pouvez le faire en modifiant App/Http/Controllers/Auth/AuthController.php

Ajoutez authenticated() dans cette classe pour remplacer celle par défaut:

use Illuminate\Http\Request;

protected function authenticated(Request $request, User $user) {
   // put your thing in here

   return redirect()->intended($this->redirectPath());
}

Pour la déconnexion, ajoutez cette fonction dans la même classe:

use Auth;

protected function getLogout()
{
    Auth::logout();

    // do something here

    return redirect('/');
}
12
Alief

Vous pouvez essayer de configurer des écouteurs d'événements pour les événements Auth qui sont déclenchés.

Vous pouvez configurer un écouteur qui écoute Illuminate\Auth\Events\Login pour gérer ce dont vous avez besoin après la connexion et Illuminate\Auth\Events\Logout pour se déconnecter.

Laravel Docs - Authentification - Événements

4
lagbox

Si vous testez, avec la méthode authenticated(Request $request, User $user)n'utilisez pas d'alerte à l'intérieur de cette méthode pour tester, il n'affichera aucun résultat, il vaut donc mieux mettre une requête d'insertion ou quelque chose comme ça pour tester ceci méthode.

1
Adhiyaman Infotech

Pourquoi pas une simple vérification

if(Auth::check()){
    //your code
}

Assurez-vous d'inclure use Auth;

0
Iftikhar uddin