Потребить паспорт для звонков Ajax: Laravel - PullRequest
0 голосов
/ 09 сентября 2018

Я использую Passport в моем приложении Laravel-5.7. В первый раз я могу работать с любым приложением Laravel, используя Passport. Я могу сгенерировать oauth_access_token успешно. Однако интеграция Passport в мое приложение прерывает выполнение вызовов ajax . Я пытался найти решение в Интернете, но мне не хватает определенного момента.

Всякий раз, когда я делаю ajax-запрос, я получаю этот результат {"message":"Unauthenticated."}

Поскольку этот маршрут предполагается использовать в панели администратора, он использует защищенный маршрут. Вот мой код Javascript для вызова ajax:

jQuery(function ($) {
    startTime();
    $('button[name="controller"], button[name="generateApi"]').on('click', function () {
        var url = "";
        var button = $(this);
        var data = {api_token: "{!! $user->api_token !!}"};

        if (button.hasClass('tre')) {
            url = "{{ route('abc') }}";
        } else {
            url = "{{ route('xyz') }}";
            data.dataId = button.data('id');
        }

        var x = document.cookie;
        $.ajax({
            url: url,
            headers: {
                    "X-CSRF-TOKEN" : '{{ csrf_token() }}',
                    "Authorization": "Bearer " + "{{ Cookie::get('laravel_token') }}",
            },
            type: 'post',
            dataType: 'json',
            data: data,
        }).done(function (res) {

            if (button.hasClass('tre')) {
                $('input[name="apiKey"]').val(res.apiKey);
                return true;
            }

            $(button).toggleClass('btn-success btn-danger');
        });
    });
});

Объявление маршрута API:

Route::post('functionCall', ['middleware' => 'auth:api', 'uses' => 'XYZ@functionCall', 'as' => 'xyz']);

Пожалуйста, помогите мне разобраться, что мне не хватает в этом коде.

1 Ответ

0 голосов
/ 09 сентября 2018

Если вы используете свой собственный API с Javascript, вам нужно добавить промежуточное ПО Laravel\Passport\Http\Middleware\CreateFreshApiToken::class к вашему маршруту. Смотрите документы: https://laravel.com/docs/5.6/passport#consuming-your-api-with-javascript.

...