@sasha_jarvi

Как избавиться от ошибки 419 при попытке залогиниться в приложении на Laravel 7 и Vue?

Пишу небольшое приложение на Laravel 7 и Vue, разворачиваю на локальном сервере. Стал реализовывать страницу LoginPage, ранее добавил вapp.blade.php метатег с CSRF-токеном:

<meta name="csrf-token" content="{{ csrf_token() }}">


Передаю токен в скрытый инпут формы на странице LoginPage:

<template>
  <div id="login" class="login-container">
    <form role="form" action="/login" method="post">
      <div class="form-control">
        <input
          id="email"
          type="email"
          name="email"
          placeholder="Email address"
          required
          autofocus
        >
      </div>

      <div class="form-control">
        <input
          id="password"
          type="password"
          name="password"
          placeholder="Password"
          required
        >
      </div>

      <input type="hidden" name="_token" :value="csrf_token">

      <div class="form-control">
        <button type="submit">Log in</button>
      </div>
    </form>
  </div>
</template>

<script>
export default {
  data() {
    return {
      csrf_token: document.head.querySelector('meta[name="csrf-token"]').getAttribute('content')
    }
  }
}
</script>


На этом этапе все в порядке, однако когда я пытаюсь залогиниться, возникает ошибка 419 Page Expired. Читал ответы на вопросы, аналогичные моему, пробовал менять настройки в .env, session.php и чистить кэш, но ничего не помогло — ошибка не уходит. .env на данный момент выглядит так:

APP_NAME=app
APP_ENV=local
APP_KEY=***
APP_DEBUG=true
APP_URL=http://app.test

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=***
DB_USERNAME=***
DB_PASSWORD=***

BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120
SESSION_DOMAIN=.localhost

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=null
MAIL_FROM_NAME="${APP_NAME}"

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"


А session.php — так:
<?php

use Illuminate\Support\Str;

return [
    'driver' => env('SESSION_DRIVER', 'file'),
    'lifetime' => env('SESSION_LIFETIME', 120),
    'expire_on_close' => false,
    'encrypt' => false,
    'files' => storage_path('framework/sessions'),
    'connection' => env('SESSION_CONNECTION', null),
    'table' => 'sessions',
    'store' => env('SESSION_STORE', null),
    'lottery' => [2, 100],
    'cookie' => env(
        'SESSION_COOKIE',
        Str::slug(env('APP_NAME', 'laravel'), '_').'_session'
    ),
    'path' => '/',
    'domain' => env('SESSION_DOMAIN', null),
    'secure' => env('SESSION_SECURE_COOKIE', false),
    'http_only' => true,
    'same_site' => 'lax',

];


Есть ли ещё способы избавиться от ошибки 419?

P.S. Версия Laravel 7.28.1
Версия PHP 7.2
ОС: Ubuntu 20.04
MySQL: 8.0.21
Apache 2.4.41
  • Вопрос задан
  • 319 просмотров
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы