我正在使用MVC存储库/服务图层模式创建博客。 根据Separation of Concern原则,每个层必须只执行其任务。因此,在我的情况下,必须在服务层(SL)内部实现检查对象(例如,博客帖子)的用户权限。 这是否意味着必须根据业务规则在SL中检查从存储库层(RL)返回的任何?也许是这样 - 对于有一天,回购被另一个回购代替的情况。例如,如果新存储库的方法GetAllMyPosts()不正确地返回我的帖子而不是其他人,则应该通过SL过滤它们。 但在这种情况下,我们进行了双重检查:一个在RL中,只检索我的帖子,另一个在SL中过滤任何帖子,但用户是创建者的帖子。 实现它的正确方法是什么?我应该在哪里以及如何检查权限?把我的SL信任告诉RL? 谢谢!
答案 0 :(得分:0)
不是真的。如果没有继承业务逻辑,可以直接使用Repo层。所以查找等等都可以直接进行。 (再一些纯粹主义者可能会争论这个)
在你的例子中我会这样:
Service.GetAllMyPosts()
Repo.GetAllPostsForUser(userId)
因此SL确定当前用户并适当地调用回购。