VerifyCsrfToken.php第46行中的TokenMismatchException

时间:2015-04-15 21:24:03

标签: php laravel laravel-5

我正在尝试使用curl post方法提交表单。我已将csrf令牌正确设置为表单。

<form  action="{{URL::route('the-route')}}"   method="post"><input name="_token" type="hidden" value="{{csrf_token()}}">

但它在TokenMismatchException中显示VerifyCsrfToken.php line 46:。我使用共享主机卡住它,我在myapp文件夹中包含我的larvel 5项目,在{laravel public文件夹中包含public_html文件夹1}}

作为测试,我也尝试过其他一些帖子建议发表评论 App\Http\Middleware\VerifyCsrfTokenapp/Http/kernal.php 看看会发生什么。每次提交表单后,我都会收到一条消息,说明重定向到:/auth/login/auth/register,具体取决于我来自哪里,但没有成功。

3 个答案:

答案 0 :(得分:0)

我找到了最适合我的解决方案。你需要做的是:

转到 - &gt; app - &gt;例外 - &gt; Handler.php

并将其复制并粘贴到渲染方法中:

public function render($request, Exception $e)
{
if ($e instanceof TokenMismatchException) {
    Auth::logout();
    return redirect('login')->withErrors('Sorry, your session has expired.     Please login again.');
  }

return parent::render($request, $e);
}

这将为您处理TokenMismatchException并在页面上显示友好消息:)。希望它可以帮助那里的任何人!

答案 1 :(得分:-1)

I just got it working removing the line:

'Illuminate\Foundation\Http\Middleware\VerifyCsrfToken'

from /app/Http/Resquests/Kernel.php

感谢@Mahmoud Nassar

答案 2 :(得分:-1)

我解决了我的问题:

在我的情况下,我从'Illuminate\Foundation\Http\Middleware\VerifyCsrfToken'移除app/Http/kernal.php,但它不起作用,但这是TokenMismatchException in VerifyCsrfToken.php line 46的最佳解决方案

我在共享主机中托管laravel 5,作为测试,我也试过,因为其他一些帖子建议注释掉更改我的文件夹结构在外部public_html创建一个文件夹并在该文件夹中添加文件然后放{{ 1}} public(laravel)中的文件夹每次提交表单后我都会收到一条消息,说明重定向到:/ auth / login或/ auth / register取决于我来自哪里但没有成功。

所以我删除所有文件和文件夹包括我的应用程序和laravel

最后我在public_html中创建laravel 5并在.htaccess中添加以下代码(如果不存在,则在laravel根目录中创建.htaccess)

public_html

此.htaccess可帮助您从网址中移除 RewriteEngine On RewriteRule ^(.*)$ public/$1 [L]