2008-12-09 77 views
9

我正在尽最大努力设计我的网页应用程序,图层之间有良好的分离。我正在使用存储库模式,因此有一个由我的Web前端调用的ObjectService调用的SQLObjectRepository。存储库模式和分层。我在哪里申请安全?

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

回答

3

我想:

  • 写在这样一种方式,它可以在你喜欢的任何地方使用的安全检查。这样,您可以根据需求的变化进行重构。

  • 如果安全检查真的会总是申请,将其放置在仓库层(或更好,在一个方面,如果你的语言支持的话),使多个服务将共享通用的安全,如果他们使用相同的库。否则,将其放置在服务中(或作用于服务的方面)。

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

    • 如果安全检查后变得更加复杂(取决于用户的其它性质)的API将不会改变;
    • 它使语义更有意义 - 您检查用户是否有权执行某些操作,而不是国家/地区列表。