Я только что зарегистрировал новое приложение в 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,
Возможно, это что-то с настройками вашего домена.
Мой был извлечен из файла 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>