【发布时间】:2018-09-21 16:09:57
【问题描述】:
使用 Laravel、Passport 和 Vue 构建应用程序。此问题与使用 oAuth2 登录没有直接关系,而是使用您自己的 javascript 代码使用受 Passport 保护的 api,如 per the docs。
在访问主页并使用 axios 获取/oauth 时,如预期的那样收到错误 401。
使用laravel提供的默认登录(使用webauth)登录后,可以回到首页,/oauth的axios请求效果很好;例如/oauth/clients 按预期返回登录用户的客户端。
mounted() {
//works as expected: 401 when logged out and response when logged in via /login
axios.get('/oauth/clients')
.then(response => {
console.log(response.data)
})
//Always returns 400 error
axios.get('/api/user')
.then(response => {
console.log(response.data)
})
}
但是,当我尝试使用 axios 获取 /api/user 时,我收到 400 错误,并显示消息未验证(无论登录之前还是之后,同样的错误)。
//Returns a 400, always
Route::middleware('auth:api')->get('/user', function (Request $request) {
return $request->user();
});
如果我是正确的,/oauth 路由工作的事实证明 laravel_token、csrf 和任何类似的东西都被正确发送。因此,我认为这是服务器端问题,尤其是 auth:api 保护。在 auth 配置文件中,我将其设置为使用 Passport,并遵循所有文档。
我很困惑为什么我在调用 api 时收到 400 错误而不是 401,以及为什么它一开始就没有进行身份验证。
自从according to this video(11:30 标记)以来尤其令人沮丧,它几乎就是即插即用。
与 Postman 的行为相同。
问:这个错误有什么解决办法吗?
完整代码on GitHub.
【问题讨论】:
-
嗨,Michal,你是怎么解决你的问题的?
标签: php laravel vue.js oauth-2.0 laravel-passport