我正在使用 Laravel 11 构建一个应用程序,其中我创建了一个管理面板并创建了一个前端网站。在前端网站中存在一个表单。当我提交表单时,不会调用请求,并且 HTTP 状态代码 419 未知状态即将到来。以及在浏览器中检查请求时。响应显示“CSRF 令牌不匹配”
错误 [在此输入图片描述](https://i.sstatic.net/itmbwv8j.png)
web.php
<?php
use App\Http\Controllers\UserController;
use App\Http\Controllers\Front\HomeController;
use App\Http\Controllers\Front\ComplainRegisterController;
use Illuminate\Support\Facades\Route;
// Route::get('/', function () {
// return view('welcome');
// });
// Admin Routes
Route::get('admin', [UserController::class, 'index']);
Route::post('admin/auth', [Usercontroller::class, 'auth'])->name('admin.auth');
//Route::middleware([AdminAuth::class])->group(function (){
Route::get('admin/dashboard', [UserController::class, 'dashboard'])->name('dashboard');
//});
// Website page Routes
Route::get('/', [HomeController::class, 'index']);
Route::get('/onlinecomplain', [ComplainRegisterController::class, 'index'])->name('onlineComplain');
Route::post('/registercomplain', [ComplainRegisterController::class, 'store']);
刀片模板中的表格
<form action="{{url('/registercomplain')}}" method="POST" class="contact-form contact-form">
@csrf
<div class="row">
<div class="col-lg-12">
<div class="form-group">
<input class="form-control" id="email" name="email" placeholder="Email*" type="email">
<span class="alert-error"></span>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-6">
<div class="form-group">
<input class="form-control" id="captchafill" name="captchafill" placeholder="Enter Captcha" type="text">
<span class="alert-error"></span>
</div>
</div>
<div class="col-lg-6">
<div class="form-group">
{{-- <img src="{{ captcha_src() }}" id="captcha-img" class="captcha"> --}}
</div>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<button type="submit" name="submit" id="submit">
<i class="fa fa-paper-plane"></i> Send OTP
</button>
<!-- <button type="submit" name="btnSubmit" id="btnSubmit" class="d-none">Submit</button> -->
</div>
</div>
<!-- Alert Message -->
<div class="col-lg-12 alert-notification">
<div id="message" class="alert-msg"></div>
</div>
</form>
控制器
<?php
namespace App\Http\Controllers\Front;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class ComplainRegisterController extends Controller
{
public function index()
{
return view('front.onlinecomplain');
}
public function store(Request $request)
{
echo '<pre>'; print_r($request->post); die;
}
}
如何解决这个问题。请指导我 谢谢
仔细检查 @csrf 指令是否存在于表单中并且在 HTML 输出中正确呈现。
<form method="POST" action="{{ url('/registercomplain') }}">
@csrf
<!-- rest of your form fields -->
</form>
然后,在浏览器中查看页面源代码。您应该看到一个隐藏的输入字段,如下所示:
<input type="hidden" name="_token" value="randomTokenStringHere">
验证
VerifyCsrfToken
中间件是否在 app/Http/Kernel.php
文件中正确配置。
VerifyCsrfToken
中间件:
打开 app/Http/Kernel.php
并查找 Web 中间件组。它应该
包括 \App\Http\Middleware\VerifyCsrfToken::class
,。如果缺少,添加它。检查config/session.php中的会话配置,尤其是会话驱动程序和生命周期设置。
{
'driver' => 'file',
'lifetime' => 120,
'expire_on_close' => false,
'secure' => false,
}
尝试清除应用程序缓存并重新生成应用程序密钥。
php artisan config:clear
php artisan cache:clear
php artisan view:clear
php artisan route:clear