2016-01-22 174 views
2

我重新安裝了Laravel 5.1,但在嘗試登錄用戶時遇到令牌不匹配錯誤。我沒有使用表單,而是使用ajax調用,在谷歌驗證滿足後登錄用戶。Laravel 5.1身份驗證 - 令牌錯誤

我的錯誤是:TokenMismatchException in VerifyCsrfToken.php line 53

我的控制器被擊中與Ajax調用:

<?php 
    namespace App\Http\Controllers; 
    use App\Email; 
    use App\Http\Controllers\Controller; 
    use Illuminate\Http\Request; 
    use Google_Client; 
    use Auth; 
    use App\User; 
    class verify extends Controller 
    { 

    public function verifyIdToken(Request $request) 
     { 
    $user = User::where('name', 'Molly')->first(); 
     Auth::login($user); 
     if (Auth::check($user)) 
{ 
    return response()->json(['Logged In' => "Yes!"]); 
} 
    } 
     } 

我沒有得到迴應,並出現上述錯誤僅500內部服務器錯誤。然而,我看到一個laravel會話cookie被返回,所以我對於發生了什麼感到非常困惑。這個標記是什麼?它爲什麼會拋出一個錯誤?

欲瞭解更多信息,我routes.php文件是:

if (Auth::guest()) { 
    Route::get('/', function() { 
     return view('welcome'); 
    }); 
} else { 
    Route::get('/', ['middleware' => 'auth', function() { 
     return view('mainview'); 
    }]); 
} 

編輯:基本上,我想打在Ajax調用來驗證用戶控制器是登錄,沒有任何內部服務器錯誤,以便在刷新,它們被重新路由到mainview而不是welcome頁面。

+0

您是否在ajax調用上發送令牌? – Meroje

+0

@Meroje號這甚至從哪裏來? –

回答

3

請嘗試以下方法,從文檔。

<meta name="csrf-token" content="{{ csrf_token() }}" /> 

$.ajaxSetup({ 
    headers: { 
     'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
    } 
}); 
+0

所以我做了這個錯誤消失了,我得到一個cookie集,但刷新主頁後,我仍然'歡迎'而不是'mainview' ...任何想法爲什麼? –

+0

在路線中將'welcome'改爲'mainview'。 – Gammer