【发布时间】:2017-01-06 18:43:17
【问题描述】:
我希望有人可以解释为什么我是unauthenticated,而我已经成功执行了Oauth 2 身份验证过程。
我已经像 Laravel 的文档一样设置了 Passport 包,并且我成功通过了身份验证,收到了令牌值等等。但是,当我尝试在/api/user 上执行get 请求时,我收到Unauthenticated 错误作为响应。我使用令牌值作为键名 Authorization 的标头,正如文档中所述。
Route::get('/user', function (Request $request) {
return $request->user();
})->middleware("auth:api");
这个函数假设我作为认证用户返回我自己,但我只得到Unauthenticated。同样,如果我只返回第一个用户,我将再次收到 Unauthenticated。
Route::get('/test', function(Request $request) {
return App\User::whereId(1)->first();
})->middleware("auth:api");
在来自Laracast 的教程中,指导Passport 的设置,指导者没有在他的路线中有->middleware("auth:api")。但如果它不存在,那么根本不需要身份验证!
请,任何建议或答案都非常欢迎!
【问题讨论】:
-
也许您可以检查您是否在 Authorization Header 中发送“Bearer
” -
我什至没有得到“未经身份验证”,我立即被重定向到登录页面。
-
您在
routes\api.php文件中写入的所有routes均默认 受api 中间件 保护。因此,您可以删除您对->middleware("auth:api")的明确提及。 -
除了@Urizev 评论之外,您是否还可以检查您的令牌是否未过期和/或被撤销以防万一。您的路线转换为 yourapproute/user ,因此请确保您请求的是此路线而不是 yourapproute/api/user 。使用 php artisan route:list 验证您的路由受 auth:api 保护
标签: authentication laravel-5.3 laravel-passport