【发布时间】:2019-08-29 14:03:52
【问题描述】:
我正在为 android 开发人员创建一个 API,以便能够显示用户下的订单。我的代码让任何用户显示任何产品,我想要的只是显示经过身份验证的用户下的订单
我已经这样保护了路线:
Route::middleware('auth:api')->group( function () {
Route::resource('orders', 'API\OrdersController');
});
我在请求中使用以下标头:
'headers' => [ 'Accept' => 'application/json', 'Authorization' => 'Bearer '.$accessToken,]
这里是 show($id) 方法的控制器代码
public function show($id)
{
$user = Auth::id();
$Orders = Orders::where('id',$id)->where('order_shopper_id', $user)->get();
if (is_null($Orders) || empty($Orders)) {
return $this->sendError('Orders not found.');
}
return $this->sendResponse($Orders->toArray(), 'Orders retrieved successfully.');
}
它可以工作,但是当例如我尝试访问订单号“2”并且经过身份验证的用户没有创建该订单时,它仍然返回成功且数据为空。
我想要的是,“选择订单号 (#),但请确保登录用户创建了该订单而不是其他人,如果没有返回未验证”
提前谢谢你。
【问题讨论】:
-
$user中有什么内容?你能检查一下吗?返回它,看看它是否为空。 -
返回当前认证的用户id
-
只要用这个
if ($Orders)就行了。 -
它返回或者你期望它返回用户ID?因为我认为你必须使用 api guard。
-
我用Postman测试过,只要我用的是token,它就会返回id,我用的是api guard。不过我会查一下,看看我是否应该使用它。
标签: php laravel authentication eloquent