Je gère le PHP Artisan goot: auth commandement et je vais expliquer étape par étape ce que je fais après cela pour comprendre le scénario,
Ce n'est que ces types de scénarios peuvent survenir, et je ne veux pas voir ce message d'erreur, juste déconnecter après avoir cliqué sur la déconnexion, même si la session est expirée.
Remarque: ce problème n'est pas à cause de l'ajout de @CSRF
<a href="{{ route('logout') }}" class="dropdown-item notify-item"="event.preventDefault(); document.getElementById('logout-form').submit();">
<i class="fa fa-power-off"></i> <span>{{ __('Logout') }} </span>
</a>
<form id="logout-form" action="{{ route('logout') }}" method="POST" style="display: none;">
@csrf
</form>
Vous avez manqué le formulaire de déconnexion @csrf dans votre page de déconnexion, alors vous obtenez une erreur 419
Dans A Laravel 6 projet, j'ai fini par modifier le VerifyCsrfTokenMiddleware
comme suit
Comme vous le verrez, j'ai simplement ajouté le logout
itinéraire nommé à la liste d'exclusion.
J'ai remplacé la fonction __construct
Car nous ne pouvons pas utiliser route()
fonction lors de l'initialisation d'une nouvelle variable
<?php
namespace App\Http\Middleware;
use Illuminate\Contracts\Encryption\Encrypter;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;
class VerifyCsrfToken extends Middleware
{
/**
* Indicates whether the XSRF-TOKEN cookie should be set on the response.
*
* @var bool
*/
protected $addHttpCookie = true;
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = [
];
/**
* Create a new middleware instance.
*
* @param \Illuminate\Contracts\Foundation\Application $app
* @param \Illuminate\Contracts\Encryption\Encrypter $encrypter
* @return void
*/
public function __construct(Application $app, Encrypter $encrypter)
{
parent::__construct($app, $encrypter);
$this->except = [
route('logout')
];
}
}