Я только что создал новый проект 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
17 ответов
У меня была такая же проблема с localhost:8000
(php artisan serve
). Возможно, это совпадение, но попробуйте использовать чистый браузер , отличный от того, который вы использовали в предыдущей разработке. Для меня это сработало.
Похоже, что проблема в файлах cookie от разработки с предыдущими версиями Laravel, по тому же адресу.
Привет всем групповым путям, которые вы хотите применить ко всем, используйте этот метод, который является моей версией 5.5 larval. Используйте звездочку => перейдите в приложение / Http / Middleware / VerifyCsrfToken и добавьте
protected $except = [
'/user/*'
];
Это также путь моего пользователя
Route::group(['prefix' => 'user', 'namespace' => 'User', 'as' => 'user.'] , function (){
У меня была такая же проблема. 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',
];
}
Извините за ответ позже у меня была такая же проблема после поиска в интернете нашел два решения
1 - Add
@csrf
Или
<input type="hidden" name="_token" value="{{ csrf_token() }}">
Внутри вашей формы, если отсутствует
2: если вы долго открывали свою страницу входа и не входили в систему. Просто обновите браузер или нажмите Ctrl + F5
Добавьте этот код в свой
файл app \ Exceptions \ Handler.php
if ($exception instanceof \Illuminate\Session\TokenMismatchException) {
// Perform operation on page expired
}
Эта проблема в основном вызвана тем, что в вашей форме нет токена csrf. Во время проверки токена csrf происходит сбой, поэтому вы получаете эту страницу. Laravel обычно нужен токен csrf во всех его формах. Вы можете добавить токен csrf, просто добавив его в форму.
{{ csrf_field() }}
Другой способ сделать это - вы можете исключить свой маршрут в промежуточном программном обеспечении verifycsrftoken.
Просто добавьте защищенное поле в промежуточное ПО с вашим именем маршрута.
protected $except=[
'1st route',
'2nd route',
.
.
];
Это должно работать.
Я только тестировал почтовые запросы на мой API и столкнулся с той же проблемой. Я решил это, добавив свой маршрут в VerifyCsrfToken
массив Middleware, то есть перейдите к app/Http/Middleware/VerifyCsrfToken
и добавьте
protected $except = [
'your/route'
];
Но если ваши запросы поступают с какой-либо интерфейсной платформы или представлений, желательно добавить {{ csrf_field() }}
в форму, которая отправляет запрос.
У меня была та же самая проблема, и это было, потому что я использовал virtualhost, и я настраивал переменную ниже mydomain.com. в файле config / session.php
'domain' => env('SESSION_DOMAIN', 'mydomain.com'),
Когда я изменил его на ноль, то он начал работать
'domain' => env('SESSION_DOMAIN', 'null'),
Я не знаю, в чем причина, но сейчас она работает нормально.
В моем случае я получил то же сообщение об ошибке, а затем решил, что пропустил добавление csrf_token
{{ csrf_field() }}
Или без помощника формы, который будет,
<input type="hidden" name="_token" value="{{ csrf_token() }}">
Если это не сработает, тогда
Обновите кеш браузера и, надеюсь, это сработает, спасибо.
Была эта проблема, а также! Решил это:
- Очистка хранилища сессии браузера и файлов cookie.
- Запуск
php artisan cache:clear
- Убедитесь, что папка
storage/framework/sessions
пуста, кроме.gitignore
. - Перезапуск среды разработки.
Похоже, это настройки разрешений либо для хранилища, и / или для начальной загрузки / кэша.
Я использую сервер Cloudways. Я сбросил разрешения на моем сервере в настройках приложения, и теперь он работает. На моем локальном сервере разработки эквивалентно было установить chmod 777 в хранилище. Я использовал 755 ранее, и ошибка сохранилась.
Я думаю, что вы пропустили токен CSRF.
Не забудьте использовать {!! csrf_field() !!}
Если вы создали новый проект localhost. Вам нужно просмотреть строку config / session: 166, если 'secure' => true, вам нужно отредактировать 'secure' => false, когда вы запустите хост или сервер, переконфигурируйте => true, извините, я немного знаю английский, надеюсь, может помочь вам
Я бы также оставил csrf_token
в метатеге.
<meta name="csrf-token" content="{{ csrf_token() }}">
Попробуйте это в вашем глобальном приложении-обработчике / Exceptions / Handler.php
public function render($request, Exception $e)
{
if ($e instanceof \Illuminate\Session\TokenMismatchException) {
return redirect('/login');
}
return parent::render($request, $e);
}
Добавить токен csrf
<input type="hidden" name="_token" value="{{ csrf_token() }}">
Похожие вопросы
Новые вопросы
php
PHP - это широко используемый высокоуровневый, динамический, объектно-ориентированный и интерпретируемый язык сценариев, в первую очередь предназначенный для серверной веб-разработки. Используется для вопросов о языке PHP.