我在我的Production Server上遇到TokenMismatchException,但该应用程序在本地Xampp服务器和另一个托管上工作正常。它是我们的内部服务器,所以我们无法改变它。我们必须使用它,但我们不明白问题在哪里。
请朋友帮助我,我是否需要更改服务器中的任何内容,如插件,扩展程序或其他任何内容,请告诉我。以下是屏幕截图:
以上sceenshot来自Production和托管服务提供商之一。在生产服务器laravel应用程序上给出tokenmismatchexception,而相同的应用程序在另一个托管提供商上正常工作。我们不明白为什么会这样。请建议我们做什么。
更新
我有新鲜的laravel 5.2并运行php artisan make:auth
之后我已经给了该文件夹777的权限,然后什么也没有。我仍然得到这个例外。
答案 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