【发布时间】:2021-04-05 14:59:16
【问题描述】:
我正在制作一个使用jwt 作为身份验证系统的应用,
当我尝试更新我的 Category 模型时,策略总是返回 403 未授权,
我正在使用apiResource 到crud 我的模型。
我的代码
在api.php:
Route::apiResource('category', CategoryController::class);
在CategoryController.php:
public function update(Request $request, $id)
{
// print_r($request->all());
$validator = Validator::make(
$request->all(),
[
'name' => 'required|min:2|unique:categories,name,' . $request->id,
'description' => 'required|min:1',
],
[
"name.unique" => "اسم الصنف مستخدم مسبقا",
"name.required" => "اسم الصنف مطلوب",
"name.min" => "اسم الصنف يجب أن يحتوي على حرفين على الأقل",
"description.required" => "وصف الصنف مطلوب",
]
);
if ($validator->fails()) {
return response()->json(['errors' => $validator->messages(), 'status' => 422], 200);
}
$category = Category::find($id);
$category->name = $request->name;
$category->description = $request->description;
$category->save();
return response()->json([
"message" => "تم تحديث الصنف",
"status" => 200
], 200);
}
在CategoryPolicy.php:
public function update(User $user, Category $category)
{
return $category->user_id === $user->id;
}
似乎request 甚至没有达到CategoryPolicy.php 中的update 方法
因为即使方法总是返回 true 它也不起作用:
public function update(User $user, Category $category)
{
return true;
}
viewAny 方法按预期工作。
我正在使用 axios 来获取和更新数据,我正在使用
bearer token发送请求,除了上述问题之外,一切正常。
【问题讨论】:
-
您在哪里调用类别策略更新?
-
这里似乎没有任何东西会导致任何授权检查
-
@HadiAhmadi 策略自动运行,请参阅laravel.com/docs/8.x/authorization#policy-auto-discovery
标签: laravel laravel-authentication laravel-authorization laravel-jwt