Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Привет! подскажи плиз из за чего возникает периодически ошибка
production.ERROR: exception 'Illuminate\Session\TokenMismatchException'
и пути решения
версия PHP Version 5.6.30
версия Laravel 5.1.*
Не в сети
Потому что не передаётся значение поля _token
добавьте в форму вот это
<input type="hidden" name="_token" value="{{csrf_token()}}">
Не в сети
На странице есть такое поле
смотрю исходный код и там прописано
<input name="_token" type="hidden" value="aZvWyGIDYABuHnkoZqpUOiTcTGmynqk7JYaQqNkA">
Не в сети
Скиньте сюда этот исходный код
возможно он не попадает внутрь тэга <form>
и напишите полный текст ошибки, ещё если это будет скриншотом, было бы замечательно
Не в сети
исохдник:
div class="panel-body">
{!! Form::model($property, ['method' => 'PATCH', 'url' => URL::route('propertys.update', [$current_project, $property->id]), 'class' => 'form-horizontal form-bordered']) !!}
@include('propertys._form', ['submitButtonText' => \Lang::get('common.to_save'), 'entity' => $property])
{!! Form::close() !!}
внури все поля
полный текст ошибки:
[2017-02-20 13:17:12] production.ERROR: exception 'Illuminate\Session\TokenMismatchException' in /home/www/domen.ru/domains/domen.ru/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php:53
Stack trace:
#0 [internal function]: Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle(Object(Illuminate\Http\Request), Object(Closure))
#1 /home/www/domen.ru/domains/domen.ru/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(124): call_user_func_array(Array, Array)
#2 /home/www/domen.ru/domains/domen.ru/www/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#3 [internal function]: Illuminate\View\Middleware\ShareErrorsFromSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#4 /home/www/domen.ru/domains/domen.ru/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(124): call_user_func_array(Array, Array)
#5 /home/www/domen.ru/domains/domen.ru/www/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(62): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#6 [internal function]: Illuminate\Session\Middleware\StartSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#7 /home/www/domen.ru/domains/domen.ru/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(124): call_user_func_array(Array, Array)
#8 /home/www/domen.ru/domains/domen.ru/www/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#9 [internal function]: Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle(Object(Illuminate\Http\Request), Object(Closure))
#10 /home/www/domen.ru/domains/domen.ru/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(124): call_user_func_array(Array, Array)
#11 /home/www/domen.ru/domains/domen.ru/www/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(59): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#12 [internal function]: Illuminate\Cookie\Middleware\EncryptCookies->handle(Object(Illuminate\Http\Request), Object(Closure))
#13 /home/www/domen.ru/domains/domen.ru/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(124): call_user_func_array(Array, Array)
#14 /home/www/domen.ru/domains/domen.ru/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php(44): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#15 [internal function]: Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(Object(Illuminate\Http\Request), Object(Closure))
#16 /home/www/domen.ru/domains/domen.ru/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(124): call_user_func_array(Array, Array)
#17 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#18 /home/www/domen.ru/domains/domen.ru/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
#19 /home/www/domen.ru/domains/domen.ru/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(122): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#20 /home/www/domen.ru/domains/domen.ru/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(87): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request))
#21 /home/www/domen.ru/domains/domen.ru/www/public/index.php(56): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))
#22 {main}
Не в сети
ну и для большей ясности картины скиньте то, что лежит вот в этой вьюхе
propertys._form
Не в сети
@include('ui.input', [
'field' => [
'type' => 'text',
'name' => 'title',
'label' => \Lang::get('properties.title').':'
]
])
@include('ui.input', [
'field' => [
'type' => 'text',
'name' => 'price',
'label' => \Lang::get('properties.price').':'
]
])
<div class="form-group">
<div class="col-sm-4 col-sm-offset-3">
{!! Form::submit($submitButtonText, ['class' =>'btn btn-primary ']) !!}
</div>
</div>
содержимое ui.input
{!! Form::text($field['name'], isset($entity) && isset($entity->{$field['name']}) ? $entity->{$field['name']} : null, ['class' => 'form-control', 'id' => $field['name']]) !!}
Не в сети
А где же в этом коде <input type="hidden" name="_token" value="{{csrf_token()}}"> или его аналог?
скопируйте сюда кусок кода от <form ...> до </form> который генерируется уже в браузере
Не в сети
Если хотите забить от части на безопасность и на фэн шуй, то в файле \app\Http\Middleware\VerifyCsrfToken.php
напишите вот это
class VerifyCsrfToken extends BaseVerifier
{
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = [
'/*'
];
}
это говорит о том что во всём файле перестают проверяться токены
Не в сети
да тут его не видно, но когда смотришь исходник в браузере то это поле есть, если я еще раз пропишу, то он будет 2 раза
Не в сети
Попробуйте то что я написал от 18:14:43
и повторно, попадает ли тэг с токеном внутрь <form> в сгенерированном коде?
Не в сети
прописал, но код все равно остался
<input name="_token" type="hidden" value="VD1kDKNKPseIiu4X1S3Rmc5PKRaTvYRkifMCXB9L">
Не в сети
На странице есть аякс запросы? Может они перегениривают токен
Не в сети
при редактировании аякса нету
Не в сети
при редактировании аякса нету
Не в сети
прописал, но код все равно остался
<input name="_token" type="hidden" value="VD1kDKNKPseIiu4X1S3Rmc5PKRaTvYRkifMCXB9L">
Пойдём по пути наводящих вопросов
а почему он должен был пропасть?
Не в сети
ну так прописал
class VerifyCsrfToken extends BaseVerifier
{
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = [
'/*'
];
}
и ответ на вопрос
" и повторно, попадает ли тэг с токеном внутрь <form> в сгенерированном коде?"
тег остался
Не в сети
После этой записи в VerifyCsrfToken ошибка должна уйти, неужели осталась эта же ошибка?
Не в сети
Да сейчас ошибки в логах нету, но что странно переодически выкидывает из сессии и необходимо снова заходить на сайт.
В логах ничего нету, уже не знаю из за чего это может быть
Не в сети
Да, бывает такое, сам не раз сталкивался.
Причина во времени жизни cookie, 2 часа. И если страница с формой авторизации долго открыта, и нет никаких действий на сайте, то появляется эта ошибка.
vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php метод addCookieToResponse
Не в сети
Страницы 1