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');
}
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.
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() }}">
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.
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.