Laravel调用update_warehouse接口持续返回未授权错误求助
问题:调用update_warehouse接口始终返回权限错误
我已经写好中间件函数,且确认token有效,但调用update_warehouse接口时一直返回:
"You are not authorized to update this product."
试过删除数据库重新迁移,问题还是没解决。以下是控制器里的相关代码:
public function update_warehouse(Request $request, Product $product) { $loggedInUser = auth()->user(); $productId = $product->id; if ($loggedInUser->id !== $product->user_id) { $message = "You are not authorized to update this product."; return response()->json([ 'status' => 0, 'message' => $message, ]); } $input = $request->all(); $validator = Validator::make($input, [ 'name_scientific' => 'required', 'name_trade' => 'required', 'type' => 'required', 'company' => 'required', 'quantity' => 'required', 'ex_date' => 'required', 'price' => 'required' ]); if ($validator->fails()) { $message = "There is an error in the inputs."; return response()->json([ 'status' => 0, 'message' => $message, 'data' => $input, ]); } $product->name_scientific = $input['name_scientific']; $product->name_trade = $input['name_trade']; $product->type = $input['type']; $product->company = $input['company']; $product->quantity = $input['quantity']; $product->ex_date = $input['ex_date']; $product->price = $input['price']; $product->save(); $message = "The product has been updated successfully."; return response()->json([ 'status' => 1, 'message' => $message, 'data' => $product ]); }
排查与解决办法
- 核对模型绑定参数:检查路由定义,确保参数名和控制器中的
Product $product一致,比如路由要是Route::put('/warehouse/{product}', [你的控制器类名::class, 'update_warehouse']);,如果参数名错了,注入的产品模型会不对,自然user_id匹配不上。 - 打印日志确认ID值:在权限判断代码前加一行日志,看看当前用户ID和产品所属用户ID到底是什么:
去日志文件里看这两个值是不是真的不一样,说不定产品的\Log::info('当前用户ID:'.$loggedInUser->id.',产品所属用户ID:'.$product->user_id);user_id本来就不是当前登录用户的ID。 - 确认路由走了Auth中间件:虽然你说token有效,但得确保这个接口路由确实应用了Auth中间件,不然
auth()->user()可能拿不到正确的用户。 - 检查字段类型是否一致:看看
users表的id和products表的user_id字段类型是不是一样的,比如都是int,要是一个是字符串一个是数字,全等判断!==会失败。 - 改用授权策略(可选):可以用Laravel的授权策略来管权限,更规范。创建
ProductPolicy,在update方法里判断用户是否拥有该产品,然后在控制器里调用$this->authorize('update', $product);就行。
内容的提问来源于stack exchange,提问作者kareem sharaf
相关产品推荐
相关产品推荐

