2017-03-09 6 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

세션 조작으로 인해 오류가 발생할 수 있습니다. 당신이 할 때

Auth::attempt($data) 

사용자가 이미 세션에 설정되어 있습니다. Session::put() 할 필요가 없습니다. 사용자를 얻으려면, 당신은

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

그래서, 요약하면 코드에있는 모든 세션 조작을 제거하기 위해 수행

$user = Auth::user(); 

가 로그 아웃 할. Auth로만 재생합니다.

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

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

버튼을 연결 해제 하시겠습니까? 그렇다면 {{csrf_field}}를 POST 유형의 양식으로 작성해야합니다.

+0

해당 필드가 이미 추가되었습니다. –

1

와 컨트롤러의 상단에 인증을 추가 어쩌면 양식은 토큰의 입력 태그 선언되지 않았습니다

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