web-dev-qa-db-fra.com

Laravel 5.4 TokenMismatchException dans la ligne VerifyCsrfToken.php 68

Lorsque je me connecte pour la première fois, cela fonctionne parfaitement, mais lorsque je me déconnecte de mon application et que je tente de me reconnecter, j'obtiens cette erreur.

J'ai essayé presque toutes les solutions disponibles mais je ne peux pas résoudre le problème. Une solution pour corriger cette erreur? 

C’est ainsi que j’effectue la connexion et la déconnexion (corrigez-moi si le code est erroné car je suis nouveau dans laravel).

J'ai essayé laravel-caféine et {{csrf_token ()}}.

Je pense que ceci est une question liée à la session.

public function auth(Request $request)
{
    $this->validate($request, [
        'email' => 'required|email|max:255',
        'password' => 'required|min:6',
    ]);

    $data = $request->only('email', 'password');

    if (\Auth::attempt($data)) {
        $email = $request->email;
         $users = DB::table('users')
            ->where('email', $email)
            ->select('users.*', 'user_name')
            ->get();

        Session::put('set', $users);

        if ($users[0]->is_admin == '1') {
            return redirect()->intended('adminDashboard');
        }else{
            return redirect()->intended('dashboard');
        }
    }else{
        return back()->withInput()->witherrors(['Email or password did not match!']);
    }
}

public function logout(){
    Session::flush();
    return view('login/login');
}
3
ishan shah

Votre erreur peut provenir de votre manipulation de session. Quand tu fais 

Auth::attempt($data)

L'utilisateur est déjà défini dans la session. Vous n'avez pas besoin de faire votre chose Session::put(). Pour obtenir l'utilisateur, faites

$user = Auth::user();

Pour vous déconnecter, vous faites 

Auth::logout(); //will clear the user from the session automatically

Donc, pour résumer, supprimez toutes les manipulations de session que vous avez dans votre code. Ne jouez qu'avec Auth;

Session::flush(); //DELETE THIS LINE

Ajoutez Auth au sommet de votre contrôleur avec 

use Auth; //easier to work like that. 
3
EddyTheDove

Peut-être que le formulaire n'a pas déclaré la balise d'entrée du jeton:

<input type="hidden" name="_token" value="{{ csrf_token() }}">
1
Sanji

Est-ce que votre bouton se déconnecte dans un formulaire? Si tel est le cas, vous devez indiquer ceci: {{csrf_field}} dans votre formulaire de type POST.

0
ettdro

Allez dans le fichier config/session et vérifiez si vous avez cette ligne ci-dessous:

'domain' => env('SESSION_DOMAIN', null)

Si oui, alors visitez votre fichier .env et configurez-le comme suit:

SESSION_DOMAIN=null

Ensuite, rafraîchissez, ça devrait aller.

0