【问题标题】:Laravel How to prevent a user from viewing other user's data [closed]Laravel如何防止用户查看其他用户的数据[关闭]
【发布时间】:2018-07-28 17:51:45
【问题描述】:

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

我有一个查看页面,例如申请人/列表/{job_id},其中 job_id 是当前登录用户拥有的工作,但问题是这个用户可以通过以下方式查看任何工作(由任何人拥有)的数据只是改变job_id。因此,无论这些job_id属于谁,用户都可以查看所有的申请者/列表/11、申请者/列表/12、申请者/列表/13。

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

【问题讨论】:

    标签: php laravel authentication restful-authentication


    【解决方案1】:

    Laravel 确实内置了这个功能,请查看Authorization 上的文档。

    您可能会对Policies 的工作方式特别感兴趣。它们非常灵活,可通过Controllers, Models, Middleware, etc.使用

    【讨论】:

      【解决方案2】:

      您应该使用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
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-07-05
        • 2013-12-04
        • 2011-03-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-18
        相关资源
        最近更新 更多