我全新安装了 Laravel 5.1,但当我尝试登录用户时遇到 token 不匹配错误。我没有使用表单,而是使用 ajax 调用,在满足 google 验证后登录用户。
我的错误是:TokenMismatchException in VerifyCsrfToken.php line 53
我的 Controller 受到 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 session cookie 被返回,所以我对发生的事情感到非常困惑。这个 token 是什么以及为什么它会抛出错误?
欲了解更多信息,我的routes.php
文件是:
if (Auth::guest()) {
Route::get('/', function () {
return view('welcome');
});
} else {
Route::get('/', ['middleware' => 'auth', function () {
return view('mainview');
}]);
}
编辑:基本上我希望在 ajax 调用中点击 Controller 来验证用户是否已登录,而没有任何内部服务器错误,以便在刷新时将它们重新路由到 mainview
不是welcome
页。
最佳答案
尝试以下方法,来自文档。
<meta name="csrf-token" content="{{ csrf_token() }}" />
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
关于php - Laravel 5.1 身份验证 - token 不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34953348/