Laravel + Passport — почему «auth: api» отправить мне форму авторизации?

Используя Laravel (5.4) + Passport (4.0), я пытаюсь реализовать oAuth-авторизацию для моего API. Получение токена не проблема, но как только я получаю доступ к нужному ресурсу по адресу Http: //somedomain.tld/api/user Меня как-то бросают в форму входа в сеть. Мой запрос содержит все необходимые заголовки как:

[{"key":"Authorization","value":"Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImYxODk3ZmVhODIyOGQ0ZGY5MzU0ODI3NThiZTdlMmU0NTVjN2NkMzExMjc5OTdhMzU3NTQ3ZDQ5NzhhYTVmNjdjMTc5NmVlNTVjZGE4OTIyIn0.eyJhdWQiOiIxIiwianRpIjoiZjE4OTdmZWE4MjI4ZDRkZjkzNTQ4Mjc1OGJlN2UyZTQ1NWM3Y2QzMTEyNzk5N2EzNTc1NDdkNDk3OGFhNWY2N2MxNzk2ZWU1NWNkYTg5MjIiLCJpYXQiOjE1MDQxMTAzNzMsIm5iZiI6MTUwNDExMDM3MywiZXhwIjoxNTA1NDA2MzczLCJzdWIiOiIiLCJzY29wZXMiOltdfQ.WadULiSlQBJtG2Ixag8kGyI82UdXxHBGRWVJEb6ro4HGKPMpDl6-SRkp0EPV8ZJN2fZpv43g-bkJc-xVqPPHgx42QmDacOWeBcEb4kT5lYR6H540F_VmVUkB7ZRxNeEhX3cXysNmwRxrdbEvks3ml5S6pT1SSh2iDvYVk3xeAFhXv6GNBuy_3IOxaRwa9svXH7fR8n1YoJub8dnJM9xoGgXaxGFUoddjYMJNDjE7WYFHKePYES4ovp74OnPngJp62864kQ-8MEZmMaPPYmRX9SmSei-9VmWrdo5c9MyDBIDNgZpFF34bfA843LzSqgz1qDf26msjJX28tbP70fmNa1k5vt2OSYWVIB-G3eH280357VZbcbFmL34SqoAUOaWNjrLGPajBeVtqQO1sLW0y_662-b5ei3X4aZgDv09cfmll5IvkH1qsPYoB3ieBVkI8Fpet6T0p2-0iQjW9tClhGATlBMpEI67FIVBOFxw37YBmJSuj76XCd4MV0KVizWtLKpQZrYw64Kr9ncRMVf2fEsdUMZ6XahPBioTsC_CEkf9EgSBjKM-6l6P5C0yM51IbbUpjsjTZcfpzavuSDyOkrg2B_oSU9u_a2oX_K2NQyERxvsmJgkmV5FWol84GaNgPQZHOSekwdI52EobMAMFBapgjWVqjvhLagazWFsK9crI","description":""},{"key":"Content-Type","value":"application/json","description":""}]

[{"key":"Accept-Encoding","value":"application/json","description":""}]

[{"key":"Accept-Encoding","value":"application/json","description":""}]

мой маршруты / api.php читает

Route::get('/user', function (Request $request) {
return $request->user();
})->middleware('auth:api');

но почему-то меня продолжают посылать в веб-форму входа.
Кто-нибудь, кто может объяснить мне? Я уже разместил более подробный вопрос со всем исходным кодом здесь.

1

Решение

Используйте эти заголовки при запросе через AJAX, jQuery обрабатывает это автоматически для вас, но для других платформ это нужно сделать вручную.

X-Requested-With: XMLHttpRequest
1

Другие решения

Laravel проверяет, отправили ли вы запрос Ajax или нет. Вы можете отправить эту информацию заголовка в ваш API, чтобы получить ответ JSON и без перенаправления:

Accept : application/json

Другой способ — написать промежуточное программное обеспечение, в котором вы устанавливаете заголовок, прежде чем он будет передан маршрутам:

public function handle(Request $request, Closure $next)
{
$request->server->set('HTTP_ACCEPT', 'application/json');
$request->headers = new HeaderBag($request->server->getHeaders());
return $next($request);
}
1

По вопросам рекламы [email protected]