2016-10-06 2 views
0

У меня есть ужасная ошибка VerifyCsrfToken в моем проекте Laravel 5.2.TokenMismatchException в VerifyCsrfToken.php Laravel 5.2

Соответствующие коды приведены ниже:

маршрут, который бросает ошибку

Route::group(['middleware' => ['web']], function(){ 
    Route::resource('register', 'RegisterController'); 
}); 

ошибка возникает при попытке зарегистрировать нового пользователя с помощью запроса POST

Регистрация контроллер

public function store(Request $request) 
{ 
    return AppUser::create([ 
     'name' => $request->input('name'), 
     'email' => $request->input('name'), 
     'contact_number' => $request->input('contact_number'), 
     'api_token' => str_random(60), 
     'password' => $request->input('password'), 
    ]); 
} 

Ожидаемый выход

{ 
    "email": "test.name", 
    "contact_number": "654987123", 
    "updated_at": "2016-10-06 06:30:26", 
    "created_at": "2016-10-06 06:30:26", 
    "id": 4 
} 

Что делает мой вопрос отличается от других рассогласования вопросов VerifyCsrf есть, у меня нет формы, чтобы добавить скрытое поле {{ csrf_token() }}. Я просто отправил запрос, используя Postman (и завиток), и пользователь должен быть зарегистрирован.

Когда я делаю следующее редактирование на app/Http/Middleware/VerifyCsrfToken.php

protected $except = [ 
    '/*' 
    // 
]; 

ошибка исчезает, и она работает, как и должно быть, но я не думаю, что является рекомендуемым способом.

Thanks

+0

Что именно вы пытаетесь достичь, и YES, добавив «/ *» не совсем рекомендуемый способ. –

+0

@GauravDave из приведенных выше кодов, все, что я хочу сделать, это зарегистрировать пользователя (это был просто тест, а не окончательная версия), поэтому я отправляю необходимые данные в тело, используя postman, а ссылка - 'localhost: 8000/register' , И я хочу, чтобы данные были введены в базу данных. – user3536523

+0

Кто отказался от этого:/ – user3536523

ответ

1

Храните токен в файле корневого клинка. если вы используете только по умолчанию вид, то может быть в layout/main.blade.php

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

При использовании JQuery, теперь вы можете поручить его, чтобы включить маркер во всех заголовках запроса.

$.ajaxSetup({ 
    headers: { 
      'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
     } 
    }); 

Если вы все еще получаете ошибки следуют: https://gist.github.com/ethanstenis/3cc78c1d097680ac7ef0

+0

Шляпы к вам, сэр. Весьма признателен. Я следовал инструкциям в github post, и теперь он работает на Postman. Если я включаю заголовок с моим HTTP-запросом, мой api должен работать, правильно? – user3536523

+0

Я рад, что это помогло. –