Laravel如何防止用户查看其他用户的数据

时间:2018-02-18 09:28:07

标签: php laravel authentication restful-authentication

我是Laravel的新手,我在L5.4上做了一个应用程序。

我有一个视图页面,例如,applicant / list / {job_id},其中job_id是当前登录用户拥有的作业,但问题是这个用户可以查看任何作业的数据(由任何人拥有)只是改变job_id。因此,无论这些job_ids属于谁,用户都可以查看申请人/ list / 11,申请人/列表/ 12,申请人/列表/ 13的所有内容。

Laravel是否提供内置功能?处理这个问题的最佳方法是什么?

2 个答案:

答案 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
}