Laravel API策略返回403

Laravel API策略返回403,laravel,api,authorization,Laravel,Api,Authorization,我正在尝试为我的LaravelAPI创建策略,这样只有用户才能编辑他们自己的配置文件。可能这些策略对API的工作方式不同 控制器: 公共函数更新配置文件(请求$Request,用户$User) { $this->authorize('updateProfile',$user->profile); $validator=validator::make($request->all()[ “显示名称”=>“必需”|唯一:配置文件”, ]); 如果($validator->fails()) return

我正在尝试为我的LaravelAPI创建策略,这样只有用户才能编辑他们自己的配置文件。可能这些策略对API的工作方式不同

控制器:

公共函数更新配置文件(请求$Request,用户$User)
{
$this->authorize('updateProfile',$user->profile);
$validator=validator::make($request->all()[
“显示名称”=>“必需”|唯一:配置文件”,
]);
如果($validator->fails())
return response()->json(['error'=>$validator->messages()],422);
$user->profile->update($request->all());
返回响应(['message'=>'配置文件成功更新']);
}
政策

公共函数更新配置文件(用户$User,配置文件$Profile)
{
返回$user->id===$profile->user\u id;
}
AuthServiceProvider

protected $policies = [
    // 'App\Models\Model' => 'App\Policies\ModelPolicy',
    Profile::class => ProfilePolicy::class
];
它们返回403个错误。我在想也许我需要使用请求,而不是策略中的用户模型?像

 $request->user->id === $request->profile->user_id

你知道问题是什么吗?

你在AuthServiceProvider类中注册了策略吗?@reans是的,我更新了postbefore
return$user->id===$profile->user\u id
,放了一个
dd(“user{$user->id},profile user id{$profile->user\u id}”)
以确保它实际调用的策略和值是正确的。@IGP Yes返回值。User->id返回我登录的用户,profile->User\u id返回我试图编辑的配置文件的用户id,它们都是相同的吗?尝试使用
==
而不是
=
,以防出现类型差异。另外,请尝试在
$this->authorize()
之前和之后添加
dd()
,以查看该策略是否是导致此问题的策略。您是否定义了
Gate::before
Gate::after
回调?