Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 5.1使用中间件保护具有所有权的路由_Php_Laravel_Laravel 5.1_Middleware - Fatal编程技术网

Php Laravel 5.1使用中间件保护具有所有权的路由

Php Laravel 5.1使用中间件保护具有所有权的路由,php,laravel,laravel-5.1,middleware,Php,Laravel,Laravel 5.1,Middleware,我正在努力学习拉威尔,但不太明白如何以最佳方式完成任务 情景 用户(用户id 5)可以创建id为3(todo id 3)的todo列表。他们每个人都生活在自己的模型中,所以用户模型和todo模型。我目前正在检查他们是否通过将其传递到方法中来创建todo public function show($id) { TodoList::where('id',$id)->where('user_id', auth::id())->firstOrFail(); return 'o

我正在努力学习拉威尔,但不太明白如何以最佳方式完成任务

情景

用户(用户id 5)可以创建id为3(todo id 3)的todo列表。他们每个人都生活在自己的模型中,所以用户模型和todo模型。我目前正在检查他们是否通过将其传递到方法中来创建todo

public function show($id)
{
    TodoList::where('id',$id)->where('user_id', auth::id())->firstOrFail();
    return 'ok';
}
所以,我认为可以使用中间件过滤所有这些。我有更多的模型需要相同的操作,因此用户2无法更改/编辑用户5等的待办事项列表。这需要附加到所有方法,以阻止其访问。显示、查看、删除等

有没有办法做到这一点,这样我就不必为每个模型创建新的中间件了?

Laravel Eloquent为您提供了,这可能就是您想要的

您的型号:

class TodoList extends Model {
    public function scopeFiltered($query, $id, $user_id)
    {
        return $query->where('id',$id)->where('user_id', $user_id);
    }
}
电话:

TodoList::filtered($id, Auth::user()->id)
   ->get();

是的,这正是我想要的。但是,这样做,我仍然需要为每个模型这样做?有没有一种更具活力的方式来做到这一点?这样我就可以指定模型名并访问我需要的内容了?你理解我的问题,我只是觉得奇怪,这种普通的事情是“很难”完成的。