我有这样的形式
<form action="{{ url('/reviews/delete', ['id' => $review->id]) }}"method="POST">
{{ method_field('DELETE') }}
{!! csrf_field() !!}
<a class="delete right-button"> <i class="fa fa-trash-o" aria-hidden="true"></i> </a>
</form>
当我使用检查时,我看到了ID,如果我更改它,我可以删除不同的记录取决于我填入检查的ID。怎么避免这个?
答案 0 :(得分:2)
您可以像这样检查控制器
abort_if($user->id !== $review->user_id, 404)
我个人喜欢使用政策https://laravel.com/docs/5.6/authorization#writing-policies
$this->authorize('delete', $review);
答案 1 :(得分:0)
问题是HTML已经呈现了表单,当你submit
它时,请求会读取操作中的URL并转到那里,所以没有关于如何防止它的“真实”答案,但你可以在FormRequest中进行了一些验证。
如果您想要更进一步,可以创建Model Policy并检查评论是否属于试图将其删除的用户,或其他类型的验证。