当我尝试提交表单(在本例中为注册表单)时,我在新安装的
laravel 11
和 vue
中遇到以下错误。
419 |页面已过期
我已经检查了这个问题,是的,我的注册表中有
@csrf
并且
<meta name="csrf-token" content="{{ csrf_token() }}">
重现步骤
laravel 11
的新实例: composer create-project laravel/laravel test
cd test/
laravel/ui
包 composer require laravel/ui
php artisan ui vue --auth
它给了我一个警告:
[Controller.php] 文件已存在。你想更换它吗? (是/否)[是]
我输入了
yes
然后 [Enter]
npm
软件包并初始化了 vite
npm install && npm run dev
php artisan serve
编辑 在同一
repo
上还完成了其他步骤。我们使用 mongodb
,因此我们还添加了 Mongodb 配置。
laravel/mongodb
软件包 composer require mongodb/laravel-mongodb
config/database.php
中添加如下配置: ...
'mongodb' => [
'driver' => 'mongodb',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', 27017),
'database' => env('DB_DATABASE', 'assets'),
'username' => env('DB_USERNAME', ''),
'password' => env('DB_PASSWORD', ''),
'options' => [
'database' => env('DB_AUTHENTICATION_DATABASE', 'admin'),
],
],
...
DB_CONNECTION=mongodb
DB_HOST=127.0.0.1
DB_PORT=27017
DB_DATABASE=testdb
DB_USERNAME=
DB_PASSWORD=
...
我希望有人能提供解决方案。
NB我尝试安装
laravel 10
并执行相同的过程,它运行得很好。 laravel 11
发生了什么变化?如有任何帮助,我们将不胜感激。
编辑 以下是我的内容
bootstrap/app.php
<?php
use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Foundation\Configuration\Middleware;
return Application::configure(basePath: dirname(__DIR__))
->withRouting(
web: __DIR__.'/../routes/web.php',
commands: __DIR__.'/../routes/console.php',
health: '/up',
)
->withMiddleware(function (Middleware $middleware) {
//
})
->withExceptions(function (Exceptions $exceptions) {
//
})->create();
和
register.blade.php
<form method="POST" action="{{ route('register') }}">
@csrf
<div class="row mb-3">
// Rest of code
虽然问题没有明确提及,但我相信您也已将默认数据库切换为 MongoDB。
由于安装后是这样设置的,因此可能需要重新生成会话表。
在 Laravel 11 中,该命令会由
php artisan migrate
自动执行,但它是在安装 MongoDB 之前执行的。我假设迁移到新数据库后,您需要单独重新运行 migrate
命令。否则只能手动创建会话表。
php artisan make:session-table