10

我正在尽我所能设计我的 web 应用程序,并在层之间进行良好的分离。我正在使用存储库模式,因此有一个由我的 Web 前端调用的 ObjectService 调用的 SQLObjectRepository。

在我的对象模型中,用户与一个或多个区域相关联,这些区域应该过滤他们应该有权访问的对象。我的问题是,当我查询对象时,我是将代码放在服务中以设置对象的权限,还是该代码应该在存储库中?如果用户是 2 个区域的成员,我应该将用户作为参数传递给服务,还是应该将用户的区域传递给服务?

4

1 回答 1

4

我会:

  • 以可以在您喜欢的任何地方应用的方式编写安全检查。通过这种方式,您可以随着需求的变化进行重构。

  • 如果安全检查确实总是适用,请将其放置在存储库层(或者更好,如果您的语言支持它,则在一个方面),以便多个服务在使用相同存储库时共享共同的安全性。否则将其放在服务中(或作用于服务的方面)。

  • 将整个用户对象传递给安全检查机制:

    • 如果以后安全检查变得更复杂(取决于用户的其他属性),API 不会改变;
    • 它更具语义意义 - 您正在检查用户是否有权做某事,而不是国家列表。
于 2008-12-09T21:56:47.643 回答