【问题标题】:Repository Pattern and layering. Where do I apply security?存储库模式和分层。我在哪里应用安全性?
【发布时间】:2008-12-09 18:49:30
【问题描述】:

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

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

【问题讨论】:

    标签: security repository-pattern separation-of-concerns


    【解决方案1】:

    我愿意:

    • 以这样的方式编写安全检查,使其可以应用于您喜欢的任何地方。这样您就可以随着需求的变化进行重构。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-29
      • 2013-08-11
      相关资源
      最近更新 更多