生产服务器上的Laravel 5.2 TokenMisMatchException

时间:2016-08-01 07:37:12

标签: php laravel-5.1 laravel-5.2

我在我的Production Server上遇到TokenMismatchException,但该应用程序在本地Xampp服务器和另一个托管上工作正常。它是我们的内部服务器,所以我们无法改变它。我们必须使用它,但我们不明白问题在哪里。

请朋友帮助我,我是否需要更改服务器中的任何内容,如插件,扩展程序或其他任何内容,请告诉我。以下是屏幕截图:

Error on production when submitting login blank and geeting token mismatchexception

This on my personal hosting and the same is working fine here.

以上sceenshot来自Production和托管服务提供商之一。在生产服务器laravel应用程序上给出tokenmismatchexception,而相同的应用程序在另一个托管提供商上正常工作。我们不明白为什么会这样。请建议我们做什么。

更新

我有新鲜的laravel 5.2并运行php artisan make:auth之后我已经给了该文件夹777的权限,然后什么也没有。我仍然得到这个例外。

7 个答案:

答案 0 :(得分:4)

在您的html表单中添加

 <input type="hidden" name="_token" id="_token" value="{{csrf_token()}}">
刀片中的

{!! Form::token() !!}

在web middwlware中添加你的路线

Route::group(['middleware' => 'web'], function() {
      // Place all your web routes here...
});

答案 1 :(得分:2)

这可能是未正确设置的会话。 尝试删除 PHP_SESSID cookie 或更改会话存储在服务器上的方式。

您还可以使用测试路线检查会话是否正常工作。

答案 2 :(得分:1)

我遇到了在配置文件中创建令牌的相同问题。

尝试使用内置的artisan命令$ php artisan key:generate或手动创建密钥。

答案 3 :(得分:1)

您可能在用户登录时遇到了问题。最近我遇到了同样的问题。就我而言,我使用Auth::login($user,true)代替Auth::login($user)Auth::attempt...

的问题

其次,您还应该检查用户数据库中是否有 remember_token 列。

第三,您需要检查会话的存储位置。

我希望它会有所帮助!

答案 4 :(得分:1)

我有这个问题,对我来说问题是

SESSION_DOMAIN=custom_domain_here

在我的.env文件中设置,这在生产和本地之间是不同的。这将导致为域创建不正确的会话并抛出TokenMismatch。

希望这有助于某人。

答案 5 :(得分:0)

我有同样的问题,我用了

<form role="form" method="POST" action="{{ url('laravel-master/login') }}">

<input type="hidden" name="_token" value="{{ session()->getToken() }}">

我的表单视图中的这一行。

答案 6 :(得分:0)

尝试验证您的会话文件=&gt;应用程序/配置 'domain'=&gt; 'ip adresse或Domaine name', 如果该域名具有SSl认证 将安全变量更改为True 我希望它会对你有所帮助:D