[英]Laravel 5.1 protecting routes with ownership using middleware
我正在尝试学习Laravel,但不太了解如何以最佳方式完成任务。
场景,
用户(user_id 5)可以创建ID为3(todo_id 3)的待办事项列表。 他们每个人都生活在自己的模型中,因此用户模型和todo模型都一样。 我目前正在检查是否通过将其传递给方法来创建待办事项,
public function show($id)
{
TodoList::where('id',$id)->where('user_id', auth::id())->firstOrFail();
return 'ok';
}
因此,我认为可以使用中间件过滤所有这些内容。 我有更多的模型需要相同的操作,因此用户2无法更改/编辑用户5的todo_list等。这需要附加到所有方法上,以阻止其访问。 显示,查看,删除等
有没有办法做到这一点,所以我不必为每个模型创建一个新的中间件?
Laravel Eloquent为您提供Query Scopes
,这可能就是您想要的。
您的型号:
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();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.