laravel中的策略始终未经授权

问题描述 投票:0回答:1

我正在尝试在Post Model中制定政策,我遵循文档,但始终返回false在api.php中

Route::put('post/{id}','PostController@update')->middleware('auth:api');

在后控制器中

public function update(Request $request, Post $post,$id){
        $this->authorize('update',$post);

        $request->validate(['content'=>'required']);
        $post = $post->find($id);
        $post->content = $request->content;
        $post->save();

return response()->json($post, 200);
}

在PostPolicy中

public function update(User $user, Post $post)
  {
        return $user->id === $post->user_id;
  }

在AuthServiceProvider中]

protected $policies = [
        'App\Post' => 'App\Policies\PostPolicy',
];

请忽略模型,因为模型运行正常,如果我评论$ this->授权控制器正在运行,但是没有身份验证,则用户可以更新模型中的任何内容

我使用api使用邮递员进行测试

authorization = Bearer 'api_token'

我试图在Post Model中制定政策,我遵循文档,但在api.php Route中仍然始终返回false Route :: put('post / {id}','PostController @ update')-> middleware('auth :api');在帖子中...

php laravel
1个回答
0
投票

出现此问题的原因是,策略中的update方法需要模型的已加载实例,但是,在当前设置下,您正在传递模型的已卸载/空实例。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.