2017-03-09 16 views
2

私は初めてログインすると完全に動作しますが、私のアプリケーションからログアウトして再ログインしようとすると、このエラーが発生します。Laravel 5.4 VerifyCsrfToken.php行のTokenMismatchException 68

私はほとんどすべての解決策を試しましたが、問題を解決することはできません。このエラーを解決するための解決策はありますか?

これは私がログインとログアウトを実行する方法です(コードが間違っている場合は、私がlaravelに新しくなったので修正してください)。

私はlaravel-caffeineと{{csrf_token()}}を試しました。

私はこれがセッション関連の問題だと思います。

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'); 
} 
+0

をし、どのようにログアウトしてログインしますか? – EddyTheDove

+0

あなたが試した解決策とその結果をリストすることで、誰もが同じ行動を提案しないように助けになります。 – canadiancreed

+0

(プロジェクトのベースパス)/ public/logout、次に(ベースパス)/ publicを試してください。 – Nevermore

答えて

2

セッションの操作によってエラーが発生している可能性があります。実行したとき

ユーザーは既にセッションに設定されています。あなたはSession::put()のことをする必要はありません。ユーザーを取得するには、ログアウトする

$user = Auth::user(); 

を行い、あなたはそう、要約あなたのコードを持っているすべてのセッションの操作を削除する

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

を行います。 Authでのみ再生します。

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

use Auth; //easier to work like that. 
0

ボタンはフォームで切断していますか?その場合は、{{csrf_field}}をPOSTの形式で入力する必要があります。

+0

すでにそのフィールドが追加されています。 –

1

であなたのコントローラの上部に認証を追加多分フォームは、トークンのinputタグに宣言されていません。

<input type="hidden" name="_token" value="{{ csrf_token() }}"> 
関連する問題