php - Laravel 5.1 身份验证 - token 不匹配

标签 php ajax laravel laravel-5.1

我全新安装了 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/

相关文章:

php - MYSQL在屏幕上分段打印日期

javascript - 如何通过使用 PHP、javascript 和 html 单击从数据库检索的数据来编辑每行属性

php - 如何在 Laravel 中使用 eager 打印省份名称?

javascript - 拆分不适用于阵列

jquery ajax内存泄漏

laravel - 从 Laravel 中删除默认迁移

PHP解析HTML字符串的方式

node.js - Nodejs Express bodyParser 删除对象键

laravel - 如何对 Laravel 5.7 "email verification"电子邮件发送进行排队

php - 如何使用 Laravel 5.5 禁用 Chrome 的 Dusk headless 模式?