仅允许对拥有资源的 Auth::user 进行 CRUD

Allow CRUD only to Auth::user that owns the ressource

我目前在一个用户创建模型的项目上工作,只有 he/she 可以查看、编辑或删除。

Create Part 由 Eloquent Relationships 完成,但对于其他操作,我想将它与 Route Model 绑定结合起来,而不是在控制器中手动进行。我尝试用中间件解决它,但我无法访问资源。

有人能给我指出正确的方向吗,欢迎任何最佳实践!

我个人使用路由模型绑定,但只有在用户拥有记录时才允许模型绑定。

这意味着无论如何 - 人们永远无法访问其他人的记录。因此,例如,在我的路线中我可以做

    $router->get('property/{property}, ['uses' => PropertyController@show]);

然后在我的 RouteServiceProvider 中:

    $router->bind('property', function($value) {

        $property = \App\Property::findOrFail($value);

        if ((int)$property->user_id !== (int)auth()->id()) {
            abort (404);
        }

        return $property;
    });

所以在上面的例子中 - 我们有一个 property 路由,它会尝试找到给定的 属性 记录。然后它将检查用户是否拥有该记录,否则它会抛出 404(但您可以重定向或其他方式 - 由您决定)。