我已经检查了我网站的laravel.log,有几个错误,我想修复。最常见的错误是“ TokenMismatchException VerifyCsrfToken.php:67”
很遗憾,我无法找出这些错误的来源。我的网站上有很多表格,所以我尝试在发生错误时跟踪网址,但是使用此代码,它不起作用:
\Log::info('TokenMismatch: '.\Route::currentRouteName());
您能帮我如何找到出现这些错误的页面吗?
多谢指教!
答案 0 :(得分:1)
您的App\Exceptions\Handler
中有一个字段:
protected $dontReport = [
// etc
TokenMismatchException::class
// etc
];
如果要报告TokenMismatcheException
,则需要删除该行。
如果您还想在报告中添加自定义逻辑,则可以执行以下操作:
public function report(Exception $exception) {
if ($exception instanceof TokenMismatchException) {
\Log::info($exeption->getMessage, [ "Current URL: ".url()->current(), $e->getTraceAsString() ]); //Trace is optional but helps
} else {
parent::report($exception);
}
}
但是,默认情况下未报告TokenMismatchException
的原因是它会在错误日志中引起很多干扰。爬虫(无论是否恶意)在其日常工作中都会不断触发此类错误,因为有时这就是它们的工作方式。
答案 1 :(得分:1)
我得到了相同的错误消息,然后发现我错过了为表单字段添加csrf_token
的问题。
<form action="" class="form-horizontal" method="post" id="myform" name="distributor_form">
{{ csrf_field() }}
</form>
答案 2 :(得分:0)
将此标签添加到表单中
<input type="hidden" name="_token" value="{{ csrf_token() }}">
答案 3 :(得分:0)
或者在csrf_field()
开头标记之后使用form
,如下例所示:
<form method="POST" action="...">
{{ csrf_field() }}
...
</form>