Laravel 5 - конфликт маршрутов через Интернет и API - PullRequest
0 голосов
/ 14 февраля 2020

На одном из моих сайтов в Laravel я столкнулся с ошибкой 419 при вызове API входа в систему. Ниже моего поискового веб-маршрута:

Route::get('/{address_1}/{address_2?}/{address_3?}/{address_4?}');
Route::post('/{address_1}/{address_2?}/{address_3?}/{address_4?}');

И ниже API-маршрута:

Route::post('login', 'Auth\PassportController@login');
Route::post('register', 'Auth\PassportController@register');

1 Ответ

0 голосов
/ 14 февраля 2020

В Laravel код ошибки HTTP 419 обычно является признаком того, что вы пропускаете токен CSRF.

Если маршрут «API»:

Route::post('login', 'Auth\PassportController@login'); 
Route::post('register', 'Auth\PassportController@register');

есть в вашем web.php file, то это скорее всего потому, что RouteServiceProvider оборачивает маршруты в файле web.php в промежуточном программном обеспечении web, для которого включено промежуточное программное обеспечение CSRF.

Если это так, то вы либо необходимо включить токен CSRF в запрос POST, переместить эти маршруты в файл маршрутов api.php или добавить конечную точку register в массив $excludes промежуточного программного обеспечения VerifyCsrf.

update На самом деле, ваши поисковые маршруты вызовут много горя. Учитывая тот факт, что они могут сопоставлять любой URL с одним-четырьмя сегментами, ваши маршруты API поглощаются этим. Что вам нужно будет сделать, это изменить свой RouteServiceProvider для последней регистрации веб-маршрутов, а затем поставить последними ваши поисковые маршруты. Таким образом, ваши заранее определенные маршруты будут зарегистрированы перед вашими «всеобъемлющими» поисковыми маршрутами.

...