2016-01-22 211 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