我知道这个问题已被多次询问,我已经尝试过每个人来解决我的问题:
我使用Laravel auth / login登录我的管理部分。直到最近我在本节中添加了一些新的路线/视图时,它们都运行良好。现在当我尝试登录时,我在VerifyCsrfToken.php第46行错误中得到了TokenMismatchException。
我已尝试php artisan key:generate
,我的表格中也有<input type="hidden" name="_token" value="{{ csrf_token() }}" />
行。
这是我登录的路由:
Route::get('auth/register', function() { return redirect('/'); });
//stops anyone registering
Route::get('admin','AdminPagesController@adminHome');
Route::controllers([
'auth' => 'Auth\AuthController',
'password' => 'Auth\PasswordController',
]);
我已经摸不着头脑,我根本不明白这个问题是什么,我希望有人可以提供帮助。
我正在使用Laravel 5
答案 0 :(得分:1)
将其添加到表单而不是隐藏字段:
{{ csrf_field() }}
无论何时在应用程序中定义HTML表单,都应在表单中包含隐藏的CSRF令牌字段,以便CSRF保护中间件可以验证请求。您可以使用
csrf_field
帮助程序生成令牌字段
答案 1 :(得分:0)
<input type="hidden" name="_token" value="{{ csrf_token() }}" />
到
{{ csrf_field() }}
答案 2 :(得分:0)
如果您使用的是ajax请求,则必须设置:
<meta name="csrf-token" content="{{ csrf_token() }}">
部分中的1- <head></head>
2-
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
见https://laravel.com/docs/5.4/csrf#csrf-x-csrf-token