我想知道如何使用Laravel保护资源不被其他用户访问。
例如,如果我有这种情况:
如何保护资源2对用户1的访问?
一个例子是通过以下URL访问要编辑的资源:
http://localhost:8000/resource/2/edit
Laravel是否有这样做的功能,还是应该手动检查每个Controller方法的所有权?
提前致谢。
答案 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:这只是文档中的一个例子,有许多可以帮到你的有用的东西