如何限制用户使用另一个ID更新laravel中的其他用户评论

时间:2019-10-24 11:01:28

标签: laravel

public function update (Request $request, $id, $commentid) {
    $this->validate($request, [
        'body' =>'required|max:255'
    ]);

    $post = Post::findorFail($id);
    $comment = Comment::find($commentid);

    $body = $request->body;
    $comment->post_id = $post->id;
    $comment->body = $body;
    $comment ->user_id = Auth::user()->id;

    $comment ->save();
    return response()->json(['data' => $comment], 200, [], JSON_NUMERIC_CHECK);
}

如何限制其他user->id更新auth->id条评论 并使用发布的选择方法来捕获特定帖子的user_id,但会收到errorexception 并使用了中间件,但错误仍然相同

2 个答案:

答案 0 :(得分:2)

如果我正确理解了您的问题,则可以尝试通过以下方式进行操作:

public function update (Request $request, $id, $commentid) {
  $comment = Comment::find($commentid);

  if ( Auth::user()->id !== $comment->user_id ) {
    return response()->json(['error' => 'Forbidden'], 403);
  }

  // other code
}

我希望这个决定对您来说足够了,但是我不得不说,我更喜欢FormRequest

中的抽象验证和权限检查逻辑

https://laravel.com/docs/5.8/validation#form-request-validation

rules()函数中,您可以设置验证规则。 在authorize()中,检查用户是否可以更改评论。

答案 1 :(得分:0)

您正在使用Auth :: user();授权给用户。 laravel的默认功能是对用户进行身份验证