Php Laravel 5.1使用中间件保护具有所有权的路由
我正在努力学习拉威尔,但不太明白如何以最佳方式完成任务 情景 用户(用户id 5)可以创建id为3(todo id 3)的todo列表。他们每个人都生活在自己的模型中,所以用户模型和todo模型。我目前正在检查他们是否通过将其传递到方法中来创建todoPhp 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
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();
是的,这正是我想要的。但是,这样做,我仍然需要为每个模型这样做?有没有一种更具活力的方式来做到这一点?这样我就可以指定模型名并访问我需要的内容了?你理解我的问题,我只是觉得奇怪,这种普通的事情是“很难”完成的。