在 laravel 5.5 的验证 csrf 令牌中没有收到错误令牌不匹配异常

Posted

技术标签:

【中文标题】在 laravel 5.5 的验证 csrf 令牌中没有收到错误令牌不匹配异常【英文标题】:not getting the error Token mismatch exception in Verify csrf token in laravel 5.5 【发布时间】:2018-02-20 13:11:35 【问题描述】:

我是 Laravel 的新手,我正在使用 Laravel 5.5。 当我在没有 csrf_field() 的情况下提交时 在验证 csrf 令牌中没有收到错误令牌不匹配异常

错误是

页面由于不活动而过期。 请刷新并重试

我的 html 表单是

<form method="POST" action="/post">

    <div class="form-group">
        <label for="title">Title</label>
        <input type="text" class="form-control" name="title">

    </div>

    <div class="form-group">
        <label for="textblog">Body</label>
        <input type="textarea" class="form-control" name="body">
    </div>

    <button type="submit" class="btn btn-primary">Publish</button>
</form>

我的路线网页文件

Route::post('/post','PostsController@store');

这是我的控制器类函数

public function store() 
    dd(request()->all());

【问题讨论】:

@ShaunakShukla 感谢您的编辑 尝试其他浏览器? ***.com/questions/45994235/… @Don'tPanic 我尝试了 chrome 和 firfox 我得到了相同的响应 【参考方案1】:

正如@Shaz 在https://es.***.com/questions/99342/laravel-5-5-the-page-has-expired-due-to-inactivity-please-refresh-and-try-aga 中所说的那样

在 Laravel 5.5 中,“TokenMismatch”抛出异常,代码为 419

更新:.. 错误页面显示“页面因不活动而过期。请刷新并重试”

我建议安装https://github.com/barryvdh/laravel-debugbar 所以你可以看到异常。

你可能会看到 ../vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php#70

 return $this->addCookieToResponse($request, $next($request));
    

    throw new TokenMismatchException;

更新:

当我在没有 csrf_field() 的情况下提交时,在验证 csrf 令牌中没有收到错误令牌不匹配异常

您收到了不匹配异常,但出现了新的错误页面和代码。 (https://laravel-news.com/laravel-5-5-error-views)

csrf_field() 创建了一个隐藏在令牌中的输入,因此您必须在表单中使用它(还要检查表单中的令牌是否为空)

<input type="hidden" name="_token" value="nReVYpjfvqiVVkE8LpGeNOdJZnskNLGoB57YHFkO">

【讨论】:

我不懂上面链接的语言【参考方案2】:

似乎是 laravel 内部的一个问题。它显示不正确的消息。有一些类似的帖子:1stlink,2ndlink

你应该把你的 csrfField 放在那里,问题就会消失。 关于 laravel 错误的附加链接:

Larave 5.5: default error views and costomizing them

Laravel 5.5: set error details via debug option

【讨论】:

感谢您的回答我认为这是 Laravel 5.5 中的新错误页面重定向

以上是关于在 laravel 5.5 的验证 csrf 令牌中没有收到错误令牌不匹配异常的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.1/AngularJS:在 Angular 视图中重置密码(如何验证 CSRF 令牌?)

laravel 7 csrf 令牌不匹配

api 端点未在 Sanctum 上进行 CSRF 令牌验证 - CSRF 令牌不匹配

Laravel CSRF 保护

身份验证控制器中的 Laravel 5.2 Web 中间件导致 csrf 令牌不匹配

如何在 Laravel 中禁用 CSRF 令牌以及为啥我们必须禁用它?