Я использую 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()
.