Laravel在VerifyCsrfToken.php第46行登录TokenMismatchException

时间:2017-03-01 15:17:33

标签: php laravel laravel-5

我知道这个问题已被多次询问,我已经尝试过每个人来解决我的问题:

我使用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

3 个答案:

答案 0 :(得分:1)

将其添加到表单而不是隐藏字段:

{{ csrf_field() }}
  

无论何时在应用程序中定义HTML表单,都应在表单中包含隐藏的CSRF令牌字段,以便CSRF保护中间件可以验证请求。您可以使用csrf_field帮助程序生成令牌字段

https://laravel.com/docs/5.4/csrf#csrf-x-csrf-token

答案 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