Я только что создал новый проект laravel версии 5.5 с помощью установщика laravel. И запускаю команду " php artisan make: auth ". Представления и контроллер создаются для аутентификации пользователя. И также запускаем "< em> php artisan migrate "для создания таблиц, необходимых в базе данных. При посещении страницы входа в систему и регистрации, заполнения формы и отправки. Она показывает« Срок действия страницы истек из-за неактивности. Пожалуйста, обновите и попробуйте снова. Msgstr "Но обновление страницы ничего не помогает. Видно в исходном коде, где вызывает исключение:

if ($e instanceof ModelNotFoundException) {
        $e = new NotFoundHttpException($e->getMessage(), $e);
    } elseif ($e instanceof AuthorizationException) {
        $e = new AccessDeniedHttpException($e->getMessage());
    } elseif ($e instanceof TokenMismatchException) {
        $e = new HttpException(419, $e->getMessage());
    }

Кажется, «TokenMismatchException» вызывает эту проблему. Когда это произошло? И почему? Я просто создал этот новый проект и не делал никаких других изменений. Надеюсь, вы получили очки. Я использую php 7.1.9 (laravel 5.5 требует php> 7.0.0). И обслуживаю проект в среде разработки с помощью: php artisan serve

12
brian.shen 1 Сен 2017 в 09:13

17 ответов

Лучший ответ

У меня была такая же проблема с localhost:8000 (php artisan serve). Возможно, это совпадение, но попробуйте использовать чистый браузер , отличный от того, который вы использовали в предыдущей разработке. Для меня это сработало.

Похоже, что проблема в файлах cookie от разработки с предыдущими версиями Laravel, по тому же адресу.

11
studiojasper_pl 1 Сен 2017 в 10:11

Привет всем групповым путям, которые вы хотите применить ко всем, используйте этот метод, который является моей версией 5.5 larval. Используйте звездочку => перейдите в приложение / Http / Middleware / VerifyCsrfToken и добавьте

protected $except = [
    '/user/*'
];

Это также путь моего пользователя

Route::group(['prefix' => 'user', 'namespace' => 'User', 'as' => 'user.'] , function (){
0
Ali Najafi 10 Ноя 2017 в 14:06

У меня была такая же проблема. vagrant reload --provision работал на меня

0
Buddy 3 Сен 2017 в 04:12

Убедитесь, что ваша User.php модель существует в папке приложения и поля должны быть определены в этой модели.

<?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    use Notifiable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'email', 'password',
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];
}
-1
Catalyst 1 Сен 2017 в 06:37

Извините за ответ позже у меня была такая же проблема после поиска в интернете нашел два решения

1 - Add

@csrf

Или

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

Внутри вашей формы, если отсутствует

2: если вы долго открывали свою страницу входа и не входили в систему. Просто обновите браузер или нажмите Ctrl + F5

0
eraufi 4 Июл 2020 в 10:58

Добавьте этот код в свой

файл app \ Exceptions \ Handler.php

if ($exception instanceof \Illuminate\Session\TokenMismatchException) {
    // Perform operation on page expired
}
0
Rizwan Saleem 22 Янв 2020 в 07:56

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

 {{ csrf_field() }}

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

Просто добавьте защищенное поле в промежуточное ПО с вашим именем маршрута.

protected $except=[
                    '1st route',
                    '2nd route',
                    .
                    .
                  ];

Это должно работать.

0
Darshan 28 Ноя 2017 в 09:09

Я только тестировал почтовые запросы на мой API и столкнулся с той же проблемой. Я решил это, добавив свой маршрут в VerifyCsrfToken массив Middleware, то есть перейдите к app/Http/Middleware/VerifyCsrfToken и добавьте

protected $except = [
        'your/route'
];

Но если ваши запросы поступают с какой-либо интерфейсной платформы или представлений, желательно добавить {{ csrf_field() }} в форму, которая отправляет запрос.

0
Allan Mwesigwa 26 Окт 2017 в 22:59

У меня была та же самая проблема, и это было, потому что я использовал virtualhost, и я настраивал переменную ниже mydomain.com. в файле config / session.php

'domain' => env('SESSION_DOMAIN', 'mydomain.com'),

Когда я изменил его на ноль, то он начал работать

'domain' => env('SESSION_DOMAIN', 'null'),

Я не знаю, в чем причина, но сейчас она работает нормально.

7
Afraz Ahmad 8 Окт 2017 в 20:28

В моем случае я получил то же сообщение об ошибке, а затем решил, что пропустил добавление csrf_token

{{ csrf_field() }}

Или без помощника формы, который будет,

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

Если это не сработает, тогда

Обновите кеш браузера и, надеюсь, это сработает, спасибо.

12
Maniruzzaman Akash 2 Окт 2017 в 06:25

Была эта проблема, а также! Решил это:

  1. Очистка хранилища сессии браузера и файлов cookie.
  2. Запуск php artisan cache:clear
  3. Убедитесь, что папка storage/framework/sessions пуста, кроме .gitignore.
  4. Перезапуск среды разработки.
-1
Doug Black 26 Янв 2018 в 12:57

Похоже, это настройки разрешений либо для хранилища, и / или для начальной загрузки / кэша.

Я использую сервер Cloudways. Я сбросил разрешения на моем сервере в настройках приложения, и теперь он работает. На моем локальном сервере разработки эквивалентно было установить chmod 777 в хранилище. Я использовал 755 ранее, и ошибка сохранилась.

1
Dylan Glockler 29 Сен 2017 в 20:45

Я думаю, что вы пропустили токен CSRF.

Не забудьте использовать {!! csrf_field() !!}

30
Kokil 1 Сен 2017 в 17:37

Если вы создали новый проект localhost. Вам нужно просмотреть строку config / session: 166, если 'secure' => true, вам нужно отредактировать 'secure' => false, когда вы запустите хост или сервер, переконфигурируйте => true, извините, я немного знаю английский, надеюсь, может помочь вам

-1
Scott 4 Окт 2017 в 17:11

Я бы также оставил csrf_token в метатеге.

<meta name="csrf-token" content="{{ csrf_token() }}">
0
Raza Mehdi 11 Окт 2017 в 10:09

Попробуйте это в вашем глобальном приложении-обработчике / Exceptions / Handler.php

public function render($request, Exception $e)
{
    if ($e instanceof \Illuminate\Session\TokenMismatchException) {

        return redirect('/login');

    }

    return parent::render($request, $e);
}
1
Berkat 1 Фев 2020 в 10:12

Добавить токен csrf

       <input type="hidden" name="_token" value="{{ csrf_token() }}">
1
shalini 8 Сен 2017 в 12:16