Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 20.02.2017 15:27:33

production.ERROR

Привет! подскажи плиз из за чего возникает периодически ошибка
production.ERROR: exception 'Illuminate\Session\TokenMismatchException'
и пути решения
версия PHP Version 5.6.30
версия Laravel 5.1.*

Не в сети

#2 20.02.2017 15:54:47

Re: production.ERROR

Потому что не передаётся значение поля _token
добавьте в форму вот это

<input type="hidden" name="_token" value="{{csrf_token()}}">

Не в сети

#3 20.02.2017 16:06:12

Re: production.ERROR

На странице есть такое поле
смотрю исходный код и там прописано
<input name="_token" type="hidden" value="aZvWyGIDYABuHnkoZqpUOiTcTGmynqk7JYaQqNkA">

Не в сети

#4 20.02.2017 16:24:39

Re: production.ERROR

Скиньте сюда этот исходный код
возможно он не попадает внутрь тэга <form>
и напишите полный текст ошибки, ещё если это будет скриншотом, было бы замечательно

Не в сети

#5 20.02.2017 16:37:04

Re: production.ERROR

исохдник:
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}

Не в сети

#6 20.02.2017 16:42:10

Re: production.ERROR

ну и для большей ясности картины скиньте то, что лежит вот в этой вьюхе
propertys._form

Не в сети

#7 20.02.2017 16:46:10

Re: production.ERROR

@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']]) !!}

Не в сети

#8 20.02.2017 17:11:50

Re: production.ERROR

А где же в этом коде <input type="hidden" name="_token" value="{{csrf_token()}}"> или его аналог?
скопируйте сюда кусок кода от <form ...> до </form> который генерируется уже в браузере

Не в сети

#9 20.02.2017 17:14:43

Re: production.ERROR

Если хотите забить от части на безопасность и на фэн шуй, то в файле \app\Http\Middleware\VerifyCsrfToken.php
напишите вот это

class VerifyCsrfToken extends BaseVerifier
{
    /**
     * The URIs that should be excluded from CSRF verification.
     *
     * @var array
     */
    protected $except = [
        '/*'
    ];
}

это говорит о том что во всём файле перестают проверяться токены

Не в сети

#10 20.02.2017 17:15:21

Re: production.ERROR

да тут его не видно, но когда смотришь исходник в браузере то это поле есть, если я еще раз пропишу, то он будет 2 раза

Не в сети

#11 20.02.2017 17:18:58

Re: production.ERROR

Попробуйте то что я написал от 18:14:43
и повторно, попадает ли тэг с токеном внутрь <form> в сгенерированном коде?

Не в сети

#12 20.02.2017 17:22:30

Re: production.ERROR

прописал, но код все равно остался
<input name="_token" type="hidden" value="VD1kDKNKPseIiu4X1S3Rmc5PKRaTvYRkifMCXB9L">

Не в сети

#13 20.02.2017 17:37:03

Re: production.ERROR

На странице есть аякс запросы? Может они перегениривают токен

Не в сети

#14 20.02.2017 18:09:59

Re: production.ERROR

при редактировании аякса нету

Не в сети

#15 20.02.2017 18:10:07

Re: production.ERROR

при редактировании аякса нету

Не в сети

#16 20.02.2017 18:51:06

Re: production.ERROR

Mauzer пишет:

прописал, но код все равно остался
<input name="_token" type="hidden" value="VD1kDKNKPseIiu4X1S3Rmc5PKRaTvYRkifMCXB9L">

Пойдём по пути наводящих вопросов
а почему он должен был пропасть?

Не в сети

#17 20.02.2017 19:00:23

Re: production.ERROR

ну так прописал
class VerifyCsrfToken extends BaseVerifier
{
    /**
     * The URIs that should be excluded from CSRF verification.
     *
     * @var array
     */
    protected $except = [
        '/*'
    ];
}

и ответ на вопрос
" и повторно, попадает ли тэг с токеном внутрь <form> в сгенерированном коде?"
тег остался

Не в сети

#18 20.02.2017 19:06:15

Re: production.ERROR

После этой записи в VerifyCsrfToken ошибка должна уйти, неужели осталась эта же ошибка?

Не в сети

#19 21.02.2017 20:27:30

Re: production.ERROR

Да сейчас ошибки  в логах нету, но что странно переодически выкидывает из сессии и необходимо снова заходить на сайт.
В логах ничего нету, уже не знаю из за чего это может быть

Не в сети

#20 22.02.2017 11:08:09

Re: production.ERROR

Да, бывает такое, сам не раз сталкивался.
Причина во времени жизни cookie, 2 часа. И если страница с формой авторизации долго открыта, и нет никаких действий на сайте, то появляется эта ошибка.
vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php метод addCookieToResponse

Не в сети

Подвал раздела