我有一个全新安装的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} }页面。
答案 0 :(得分:3)
尝试以下方法,来自文档。
<meta name="csrf-token" content="{{ csrf_token() }}" />
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});