我是Laravel的新手,我在L5.4上做了一个应用程序。
我有一个视图页面,例如,applicant / list / {job_id},其中job_id是当前登录用户拥有的作业,但问题是这个用户可以查看任何作业的数据(由任何人拥有)只是改变job_id。因此,无论这些job_ids属于谁,用户都可以查看申请人/ list / 11,申请人/列表/ 12,申请人/列表/ 13的所有内容。
Laravel是否提供内置功能?处理这个问题的最佳方法是什么?
答案 0 :(得分:1)
Laravel确实内置了此功能,请查看Authorization上的文档。
您可能对Policies的工作方式特别感兴趣。它们非常灵活,可通过Controllers, Models, Middleware, etc.
使用答案 1 :(得分:1)
您应该使用policies仅允许作业所有者查看数据:
public function view(User $user, Job $job)
{
return $user->id === $job->user_id;
}
然后您可以在控制器中使用该策略:
$this->authorize('view', $job);
或查看:
@can('view', $job)
{{-- User can view the job --}}
@endcan
或任何其他类:
if ($user->can('view', $job)) {
// User can view the job
}