【问题标题】:TokenMismatchException in VerifyCsrfToken.php line 53 on Live server Laravel 5.1Live server Laravel 5.1 上的 VerifyCsrfToken.php 第 53 行中的 TokenMismatchException
【发布时间】:2016-09-02 05:21:30
【问题描述】:

我正在使用Laravel 5.1 它在本地主机上运行良好。但是当我尝试登录时它返回错误,

TokenMismatchException in VerifyCsrfToken.php line 53:

当我通过在app/Http/Kernal.php 中评论'App\Http\Middleware\VerifyCsrfToken', 删除CSRF 令牌时。但在此之后它重定向到登录页面本身没有会话。

我也查了config/session.php

// session.php

<?php

return [
    'driver' => env('SESSION_DRIVER', 'file'),
    'lifetime' => 120,
    'expire_on_close' => false,
    'encrypt' => false,
    'files' => storage_path('framework/sessions'),
    'connection' => null,
    'table' => 'sessions',
    'lottery' => [2, 100],
    'cookie' => 'laravel_session',
    'path' => '/',
    'domain' => null,
    'secure' => false,
];

storageautoload 文件夹也是可写的。

有什么想法吗?

【问题讨论】:

  • 确保您在 session.php 中有正确的会话域
  • @AchrafKhouadja 我如何检查?
  • nvm 不是问题,你的表单下有 {{ csrf_field() }} 对吗?
  • @AchrafKhouadja 是的。它在本地主机中完美运行
  • 等待问题是否在本地主机上?

标签: php laravel session laravel-5


【解决方案1】:

在视图中的登录表单中添加以下内容:

@csrf

【讨论】:

    【解决方案2】:

    由于许多问题,可能会产生此错误。

    到目前为止,我只找到了 3 个案例:

    1. 输入表单的内容类型无效
    2. 外部(来自外部)数据库更改
    3. 缺少 CSRF 令牌输入。

    可能的解决方案是:

    改变表单的内容类型,

    刷新迁移(或以某种方式处理 DB 表值以使其工作),并且

    包含一个 csrf 令牌。

    这是我在 Laravel v5.2 中的经验,你可能有不同的原因。

    【讨论】:

      【解决方案3】:

      如果您使用的是 ajax,请查看有关 csrf_field 令牌设置的手册:

      https://laravel.com/docs/5.4/csrf#csrf-x-csrf-token

      【讨论】:

        猜你喜欢
        • 2015-09-05
        • 2016-06-29
        • 2016-03-03
        • 2016-03-20
        • 2016-01-02
        • 2015-11-07
        • 2017-07-20
        • 1970-01-01
        • 2016-01-04
        相关资源
        最近更新 更多