Почему один маршрут не работает, а другой работает? - PullRequest
0 голосов
/ 13 июня 2019

Я использую Laravel для обслуживания своего веб-сайта и API без сохранения состояния.Я использую Passport с токеном, установленным в cookie, для аутентификации API, это обрабатывается Passport.

. Я делаю вызовы API, используя axios в vue.js

У меня возникла проблема с вызовом API, который возвращал Unauthorized, все остальные запросы были в порядке, поиграв, я пришел к выводу, что

    this.$axios.get('session/'+this.session+'/posts')
            .then(response => { console.log(response.data); });
    Route::get('/session/{code}/posts'      , 'PostController@posts');

работает;тогда как

    this.$axios.get('session/posts')
            .then(response => { console.log(response.data); });
    Route::get('/session/posts'     , 'PostController@posts');

не возвращает (возвращает 401 несанкционированный).

В первом примере значение $code является просто скрытым идентификатором и не связано с аутентификацией, онострока символов.Кроме того, session относится к внутреннему объекту Application и вообще не относится к сеансу php.

Это у моего поставщика услуг Routes:

        Route::prefix('api')
            ->middleware('auth:api')
            ->namespace($this->namespace.'\API')
            ->group(base_path('routes/api.php'));

Это устанавливает токен вфайл cookie (laravel_token по умолчанию) и использует его для аутентификации.

Другие маршруты успешно проходят аутентификацию через это, когда я добавляю переменную в маршрут, он работает!

Может кто-нибудьобъясните мне, почему вторая версия дает несанкционированный ответ?

Кажется, это auth:api охранник, который делает это различие, но я не знаю, где в структуре Laravel фактический код check().

1 Ответ

0 голосов
/ 14 июня 2019

Пожалуйста, проверьте, есть ли в ваших маршрутах часть префикса с активированным API-интерфейсом auth: guard. тогда как для получения авторизации вам необходимо отправить сгенерированный токен API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...