4
votes

Comment se déconnecter avec une requête GET dans Laravel

J'obtiens une erreur lorsque je me déconnecte, cela me montre cette erreur ... "La méthode GET n'est pas prise en charge pour cette route. Méthodes prises en charge: POST." Veuillez m'aider à résoudre ce problème.

Voici mon code ...

@if(Auth::check())
  <li><i class="fa fa-user"></i> {{Auth::user()->name}}:
    <a href="{{url('logout')}}">logout</a>
  </li>
@else
  <li>
    <a href="{{route('login')}}"><i class="fa fa-user"></i>Login</a>
  </li>
@endif


2 commentaires

Veuillez ajouter votre code de contrôleur et d'autres codes (par exemple web.php, middlware). Sauf s'il est difficile de résoudre votre problème. Merci.


Utilisez-vous les routes d'authentification laravel par défaut en appelant "Auth :: routes ()" dans votre fichier de routes?


5 Réponses :


0
votes

Vous utilisez l'attribut href d'un lien pour appeler l'URL correspondante - ces liens utilisent cependant toujours des appels HTTP GET pour ouvrir / appeler la cible correspondante. Comme l'indique le message d'erreur, la cible que vous appelez attend un appel HTTP POST.

Sachant quel est votre problème, vous trouverez probablement cette réponse StackOverflow qui devrait vous aider à résoudre le problème d'une manière qui vous convient: Faire publier une demande de balise d'ancrage href au lieu d'obtenir


0 commentaires

1
votes

La méthode GET n'est pas prise en charge pour la déconnexion. Laravel 5.4+ utilise la méthode de publication pour la déconnexion, donc au lieu d'une simple requête GET, vous devez POSTER un formulaire pour vous déconnecter.

Ex. :

@if(Auth::check())
<li><i class="fa fa-user"></i> {{Auth::user()->name}}:</li>
        <form id="logout-form" action="{{ url('logout') }}" method="POST">
                    {{ csrf_field() }}
            <button type="submit">Logout</button>
        </form>
      @else
    <li><a href="{{route('login')}}"><i class="fa fa-user"></i>
            Login
        </a>
    </li>
@endif

Changez votre code:

<form id="logout-form" action="{{ url('logout') }}" method="POST">
            {{ csrf_field() }}
    <button type="submit">Logout</button>
</form>


0 commentaires

7
votes

Vous pouvez simplement ajouter cette ligne dans votre fichier de routes web.php :

Route::get('/logout', 'Auth\LoginController@logout');

Cela vous permet de vous déconnecter à l'aide d'une requête GET .


0 commentaires

4
votes

Utilisation

Route::get('logout', function ()
{
    auth()->logout();
    Session()->flush();

    return Redirect::to('/');
})->name('logout');

et dans le fichier d'itinéraire

<a href="{{ route('logout') }}">Logout</a>


0 commentaires

1
votes
@if(Auth::check())
  <li><i class="fa fa-user"></i> {{Auth::user()->name}}:
    <a href="{{ route('logout') }}" onclick="event.preventDefault();document.getElementById('frm-logout').submit();">Logout</a>    
    <form id="frm-logout" action="{{ route('logout') }}" method="POST" style="display: none;">
        {{ csrf_field() }}
    </form>
  </li>
@else
  <li>
    <a href="{{route('login')}}"><i class="fa fa-user"></i>Login</a>
  </li>
@endif

0 commentaires