Laravel:如何保护资源不被其他用户访问?

时间:2017-10-24 08:06:10

标签: php laravel security authentication authorization

我想知道如何使用Laravel保护资源不被其他用户访问。

例如,如果我有这种情况:

  • 用户1的资源ID为
  • 用户2的资源ID为<2 li

如何保护资源2对用户1的访问?

一个例子是通过以下URL访问要编辑的资源:

http://localhost:8000/resource/2/edit

Laravel是否有这样做的功能,还是应该手动检查每个Controller方法的所有权?

提前致谢。

1 个答案:

答案 0 :(得分:1)

您可以为此创建policy

public function update(User $user, Resource $resource)
{
    return $user->id == $resource->user_id; //for example
}

然后您可以将其作为中间件添加到您的编辑路线中:

Route::get('resource/{resource}/edit', ResourceController@edit)->middleware('can:update,resource');

Ps:这只是文档中的一个例子,有许多可以帮到你的有用的东西