控制器授权不适用于laravel 5.2

时间:2016-03-22 02:58:46

标签: laravel-5.2

我想使用Controller Authorization授权我的删除操作。我没有使用DELETE,而是将删除直接发送到控制器。学生可以被教师删除。 我遵循了 -

中解释的方法

Controller Authorization

以下是我的功能 -

public function deleteProfile(Student $student)
 {         
    //authorize the request
    $this->authorize('deleteProfile',$student);  //$student is valid Student object
    $student->delete();
 } 

当我尝试删除它时,我会例外 -

  

Handler.php第104行中的HttpException:此操作未经授权。

我发现这种方法很简单,试图实现它。有什么我想念的吗?

3 个答案:

答案 0 :(得分:0)

使用xxxPolicy.php更正此文件 添加intval()以防万一。它起作用了。

ProjectPolicy.php:

    public function destroy(User $user, Project $project)
    {
        return $user->id === intval($project->user_id;
    }

答案 1 :(得分:0)

注册一个门限策略,您可以在其中输入可以删除请求的逻辑。如果通过该逻辑当前用户可以删除,则将被删除,否则它将像您一样抛出未授权的异常。

否则,您可以手动为用户提供控制器方法的授权

$ this-> authorizeForUser($ user,'deleteProfile',$ student);

答案 2 :(得分:0)

根据documentation"当没有经过身份验证的用户时,Gate会自动为所有异能返回false"。因此,在进行任何授权之前,请检查Auth :: user()是否返回当前经过身份验证的用户。"