Laravel 5 Auth Post Submit – TokenMismatchException в строке VerifyCsrfToken.php 46

Я только что зарегистрировал новое приложение в Laravel 5, и у меня возникли проблемы с использованием автоматической версии …

Я продолжаю получать: TokenMismatchException в строке VerifyCsrfToken.php 46: при регистрации форм регистрации или регистрации …

Я могу видеть на странице формы входа в систему коды токенов, которые находятся в скрытом поле формы, и сеанс в этом месте одинаковы …

В качестве теста я также пробовал, так как некоторые другие сообщения предлагали комментировать // «App \ Http \ Middleware \ VerifyCsrfToken», в app / Http / kernal.php, чтобы узнать, что произойдет. После этого каждый раз, когда я отправляю форму, я получаю сообщение, в котором говорится о перенаправлении на: / auth / login или / auth / register в зависимости от того, откуда я пришел, без успеха.

Странным было то, что это работало, когда я впервые установил фреймворк. Все, что я сделал с тех пор, это запустить несколько миграций и настроить некоторые из моих моделей и контроллеров и засеять db некоторыми пользовательскими данными.

ОБНОВИТЬ:

Изучая эту функцию далее в функции tokensMatch () в строке 55 VerifyCsrfToken.php, если I:

var_dump($request->session()->token()); var_dump($request->input('_token')); 

Я вижу, что два токена отличаются друг от друга, но в форме:

 var_dump(Session::all()); {{{ csrf_token() }}} 

Они одинаковые. Маркер сеанса изменил некоторые параметры до того, как он дошел до функции tokensMatch () в строке 55 VerifyCsrfToken.php

Моя трассировка стека выглядит следующим образом:

 in VerifyCsrfToken.php line 46 at VerifyCsrfToken->handle(object(Request), object(Closure)) in VerifyCsrfToken.php line 17 at VerifyCsrfToken->handle(object(Request), object(Closure)) in Pipeline.php line 125 at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in ShareErrorsFromSession.php line 55 at ShareErrorsFromSession->handle(object(Request), object(Closure)) in Pipeline.php line 125 at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in StartSession.php line 61 at StartSession->handle(object(Request), object(Closure)) in Pipeline.php line 125 at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 36 at AddQueuedCookiesToResponse->handle(object(Request), object(Closure)) in Pipeline.php line 125 at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in EncryptCookies.php line 40 at EncryptCookies->handle(object(Request), object(Closure)) in Pipeline.php line 125 at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in CheckForMaintenanceMode.php line 42 at CheckForMaintenanceMode->handle(object(Request), object(Closure)) in Pipeline.php line 125 at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) at call_user_func(object(Closure), object(Request)) in Pipeline.php line 101 at Pipeline->then(object(Closure)) in Kernel.php line 111 at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 84 at Kernel->handle(object(Request)) in index.php line 53 

Сначала я только что получил работу, удалив строку:

'Осветите \ Foundation \ Http \ Middleware \ VerifyCsrfToken'

из /app/Http/Resquests/Kernel.php. Однако это означает, что проверка маркера CSRF будет удалена, что означает, что ваш сайт не будет защищен от подделок с межсайтовыми запросами.

Обновление Согласно документации , вы должны добавить токен CSRF в свою форму, добавив этот фрагмент к вашему коду:

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

Я использовал первый способ в бэкэнд-сервисах для мобильных приложений, но я нахожу, что могу отправлять отправляемый CSRF-заголовок в запросах.

Согласно документации, возможно, почему:

Вставить токен CSRF в форму

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

Проверьте файл routes.php . У меня также была эта ошибка, и она оказалась вызванной пустой строкой вверху (непосредственно перед открытием <?php ). Такая глупая ошибка, надеюсь, это может кому-то помочь.

Я была такая же проблема. Я решил это, изменив следующую строку в config / session.php

 'domain' => env('DOMAIN', 'yourdomainnamehere.co.uk'), 

Затем добавьте следующую строку .env

 DOMAIN=null 

Если вы используете блейд-шаблоны, вы можете использовать их в своей форме

 {{ csrf_field() }} 

вместо

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

Он работал со мной в Laravel 5.1.

У меня была та же проблема, мое решение было

 <form method="POST" action="path_to_action"> <input type="hidden" name="_token" value="{{ csrf_token() }}"> <input type="text" name="some_name"> </form> 

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

Если вы хотите избавиться от TokenMismatchException в VerifyCsrfToken.php, проверьте эту ссылку для простого решения @Tariq Khan: TokenMismatchException в VerifyCsrfToken.php

У меня также была такая же ситуация сегодня, из-за внезапного моего заявления начали показывать мне это сообщение …

Я только что перезапустил свой сервер, и все стало нормальным.

Решили проблему:

Когда я проверил app.blade, csrf-токен был жестко закодирован там, как <meta content="9DB/rSl5JKAkQenkfGLj4o/x6+1dIDC5m52IWJxjFfo=" name="csrf-token"> после удаления этого и добавления имени <meta content="authenticity_token" name="csrf-param"> исправлена ​​моя проблема. Это может помочь кому-то 🙂

Это то, что я делаю, чтобы исправить эту проблему.

 Assume that your web server has already write access to session directory, in my case 'app/storage/framework/sessions/'. Execute, $ rm -f {your_web_app}/storage/framework/sessions/* Reload web in your browser and try to login again. 

Есть много возможностей, которые могут вызвать эту проблему. что я испытываю, это может быть проблемой неправильной конфигурации файла конфигурации session.php. Вы случайно изменили конфигурационный файл session.php? Возможно, вы изменили значение домена от null до вашего имени сайта или чего-либо еще в session.php

'domain' => null,

Неправильная конфигурация в этом файле может вызвать эту проблему.

У меня была такая же проблема, запущен php artisan config: cache

решил все это.

Я надеюсь, что это помогает кому-то

Попробуйте маршрут php artisan: список и проверка промежуточного программного обеспечения id повторяются. Например (веб-сайт, веб-сайт и т. Д.).

В Laravel 5.3 сетевое промежуточное ПО активируется по умолчанию, я добавил

 Route::group(['middleware' => 'web'], function () { ALL MY ROUTE }); 

с этим TokenMismatch был сгенерирован.

Исправление маршрутов решает проблему для меня.

Для получения дополнительной информации см. Вопрос о Laracast

Если вы хотите использовать CSRF в форме, вы должны добавить эту строку в свою форму

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

и если вам не интересно использовать CSRF, тогда вы должны прокомментировать следующую строку в файле kernel.php

 //\App\Http\Middleware\VerifyCsrfToken::class, 

Возможно, это что-то с настройками вашего домена.

  1. Проверьте настройку «domain» в файле config / session.php.
  2. Установите его в «localhost» или в соответствующий домен, который связан с вашим приложением.
  3. Сохранить файл

Мой был извлечен из файла env, и приложение было в другом домене.

Надеюсь, это спасет некоторые клетки мозга для кого-то.

Интересно, что я столкнулся с подобной проблемой в последнее время. Я обнаружил, что есть два разных токена, созданных моим приложением Laravel 5.1. Я решил проблему, создав новый ключ приложения [php artisan key: generate]!

 <script> function closedLogo() { $.ajax({ url: '{{route('core.closed-logo')}}', type: 'post', success: function (data) { $('#return').html(data); } }); } </script>