繁体   English   中英

Laravel 5.1使用中间件通过所有权保护路由

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM