我正在使用Laravel服务我的网站和无状态API。我将Passport
与在cookie中设置的令牌一起使用来验证API,这由Passport
处理。
我使用axios
中的vue.js
来调用API
我在返回Unauthorized
的API调用中遇到问题,所有其他请求都很好,经过反复试验,我发现了以下发现
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
值只是一个模糊的ID,与身份验证无关,它是一个字符串。另外,session
指的是内部Application对象,与php会话完全无关。
这是在我的路线服务提供商中的
Route::prefix('api')
->middleware('auth:api')
->namespace($this->namespace.'\API')
->group(base_path('routes/api.php'));
这会在cookie中设置令牌(默认为laravel_token
),并使用该令牌进行身份验证。
其他路由正在通过此方法成功进行身份验证,当我将变量添加到路由时,它就可以正常工作!
有人可以向我解释为什么第二版给出未经授权的答复吗?
似乎是auth:api
卫士可以做到这一点,但是我不知道实际的check()
代码在Laravel框架中的位置。
答案 0 :(得分:0)
请检查您的路由是否激活了auth:guard api前缀的一部分。而您需要发送api生成的令牌以获得授权。