Laravel 5.1身份验证 - 令牌错误

时间:2016-01-22 18:13:51

标签: php ajax laravel laravel-5.1

我有一个全新安装的Laravel 5.1但是当我尝试登录用户时出现令牌不匹配错误。我没有使用表单,而是在使用google验证后,我使用了一个登录用户的ajax调用。

我的错误是: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而不是{{1} }页面。

1 个答案:

答案 0 :(得分:3)

尝试以下方法,来自文档。

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

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