Страница входа и регистрации Laravel 5.5 гласит: Срок действия страницы истек из-за неактивности.[Исключение tokenmismatchexception]
Я только что создал новый проект laravel версии 5.5 с помощью установщика laravel.И выполните команду "php artisan make:auth".Представления и контроллер создаются для аутентификации пользователя.А также запустите "php artisan migrate" для создания таблиц, необходимых в базе данных.При посещении страницы входа в систему и страницы регистрации заполните форму и отправьте.Он показывает "Срок действия страницы истек из-за бездействия. Пожалуйста, обновите и повторите попытку". Но обновление страницы ничего не дает помощь. Видно в исходном коде, где возникает исключение:
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
15 answers
У меня была такая же проблема на localhost:8000
(php artisan serve
). Может быть, это совпадение, но попробуйте "очистить браузер", отличный от того, который вы использовали в предыдущей разработке.
Для меня это сработало.
Похоже, что проблема связана с файлами cookie из разработки с предыдущими версиями Laravel на том же URL-адресе.
Я думаю, вы пропустили токен csrf.
Не забывайте использовать {!! csrf_field() !!}
В моем случае я получил то же сообщение об ошибке, а затем понял, что пропустил добавление csrf_token
{{ csrf_field() }}
Или без помощника формы, который будет,
<input type="hidden" name="_token" value="{{ csrf_token() }}">
Если это не сработает, то -
Обновите кэш браузера и, надеюсь, это сработает, спасибо.
У меня была та же проблема, и это было потому, что я использовал virtualhost и настроил нижеприведенную переменную на mydomain.com . в config/session.php файл
'domain' => env('SESSION_DOMAIN', 'mydomain.com'),
Когда я изменил его на null, он начал работать
'domain' => env('SESSION_DOMAIN', 'null'),
Я не знаю, в чем причина этого, но сейчас он работает нормально.
Добавить токен csrf
<input type="hidden" name="_token" value="{{ csrf_token() }}">
У меня была такая же проблема.
vagrant reload --provision
работал на меня
Убедитесь, что ваша модель 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',
];
}
Похоже, что это настройки разрешений для хранилища и/или начальной загрузки/кэша.
Я использую сервер Cloudways. Я сбросил разрешения на своем сервере в настройках приложения, и теперь он работает. На моем локальном сервере разработки эквивалентом было установить chmod 777 в хранилище.. Ранее я использовал 755, и ошибка сохранялась.
Если вы создали новый локальный хост проекта, вам нужно просмотреть строку конфигурации/сеанса: 166 если "безопасный" => true, вам нужно отредактировать "безопасный" => false, Когда вы поднимаете хост или сервер, переконфигурируйте =>правда , извините, я немного знаю английский, надеюсь, что смогу вам помочь
Я бы также сохранил csrf_token
в мета-теге.
<meta name="csrf-token" content="{{ csrf_token() }}">
Я только тестировал запросы post для своего api и столкнулся с той же проблемой.
Я решил эту проблему, добавив свой маршрут в массив промежуточного ПО VerifyCsrfToken
$except
, т.Е. Перейдите в app/Http/Middleware/VerifyCsrfToken
и добавьте
protected $except = [
'your/route'
];
Но если ваши запросы поступают с какой-либо интерфейсной платформы или представлений, рекомендуется добавить {{ csrf_field() }}
в форму, которая отправляет запрос.
Привет для групповых путей, которые вы хотите применить ко всем, используйте этот метод, который является моей версией личинки 5.5. Используйте звездочку => перейдите в приложение/Http/Промежуточное программное обеспечение/VerifyCsrfToken и добавьте
protected $except = [
'/user/*'
];
Это также путь моего пользователя
Route::group(['prefix' => 'user', 'namespace' => 'User', 'as' => 'user.'] , function (){
Эта проблема в основном вызвана тем, что у вас нет токена csrf в вашей форме. Во время проверки токена csrf происходит сбой, поэтому вы получаете эту страницу. Laravel обычно нуждается в токене csrf во всех его формах. Вы можете добавить токен csrf, просто добавив его в форму.
{{ csrf_field() }}
Другой способ сделать это - вы можете исключить свой маршрут в промежуточном программном обеспечении verifycsrftoken.
Просто добавьте защищенное поле в промежуточное программное обеспечение с вашим маршрутом имя.
protected $except=[
'1st route',
'2nd route',
.
.
];
Это должно сработать.
У меня тоже была эта проблема! Решил ее с помощью:
- Очистка хранилища сеансов браузера и файлов cookie.
- Запуск
php artisan cache:clear
- Обеспечение того, чтобы папка
storage/framework/sessions
была пустой, за исключением.gitignore
. - Перезапуск среды разработки.
Попробуйте это сделать, найдите формы в представлениях страниц входа и регистрации и добавьте следующую строку в формы
<input name="_token" type="hidden" value="TtQX3LwLMvrhLcOr75dDP2WzvHve0TE7eyilRebW">