8
votes

Se déconnecter avec HTTP Basic Auth à Laravel

J'ai une classe d'utilisateurs qui consiste en deux types d'utilisateurs et que vous souhaitez autoriser différents utilisateurs à aller à des pages différentes.

J'ai créé un filtre comme suit P>

Route::get('/winners', array('before' => 'isExpert', function()
{
    $winners = DB::select('select * from winners');
    return View::make('winners.index')->with('winners',$winners);
}));


2 commentaires

Essayez de rediriger vers un itinéraire différent au lieu de renvoyer le auth-auth :: basique () réponse. Techniquement, votre code devrait fonctionner. Vous pouvez également essayer un dd (auth :: check ()) Une fois que vous vous êtes déconnecté pour voir si la déconnexion a fonctionné correctement.


D'accord. La fonction Redirection fonctionne, je peux mettre dans une vue là-bas et elle l'apparaît. L'Auth :: Déconnue () ne fonctionne pas n'importe où dans l'application. Des idées pourquoi?


4 Réponses :


8
votes

J'ai eu le même problème, je n'ai vraiment pas pu déconnecter l'utilisateur actuel ... et la réponse est simple: Laravel ne prend pas en charge la déconnexion () avec auth :: Basic ().

Il existe des moyens de le réparer, mais ce n'est pas très propre; https://www.google.nl/search?q=logout+basic


0 commentaires

3
votes

La manière la plus simple que j'ai trouvée pour cela est de rediriger vers un nom d'utilisateur / mot de passe invalide sur la route de la déconnexion. Exemple: xxx


1 commentaires

Chaque fois que j'essaye cela, je reçois 500 erreurs de serveur car il est dans une boucle de redirection.



4
votes

Ce n'est pas une limitation de Laravel, l'autorisation de base HTTP n'est pas conçue pour gérer la déconnexion. Le client restera connecté jusqu'à la fermeture du navigateur.

L'autorisation de base HTTP ne devrait vraiment pas être utilisée dans un environnement de production public. Voici quelques raisons pour lesquelles:

  • aucun moyen de donner aux utilisateurs un "souvenir de moi" -Option sur le formulaire de connexion.
  • Les gestionnaires de mots de passe n'ont ni ne sont pas pris en charge pour HTTP Basic Auth, car il n'est pas rendu HTML mais une popup native.
  • Terrible expérience utilisateur. Mettre en place une forme de connexion appropriée vaut bien le peu de temps qu'il faut.

    Le seul cas valide que je passe est de protéger le développement public-sous-domaines comme dev.example.com, mais il existe de meilleurs moyens de résoudre cela aussi.


0 commentaires

1
votes

Si vous avez implémenté ces méthodes dans user.php xxx

ajoutez une nouvelle colonne avec nom 'Notoue_Token' à votre table 'Utilisateurs' dans la base de données MySQL, puis déconnectez-le, enfin, il est enfin résolu avec succès . Pour alterner votre table, utilisez cette commande SQL: xxx

puis appuyez sur le bouton "Go".


0 commentaires