我正在尽我所能设计我的网络应用程序,层之间有很好的分离。我正在使用存储库模式,因此有一个SQLObjectRepository,由我的Web服务调用,由我的Web前端调用。
在我的对象模型中,用户与一个或多个区域相关联,这些区域应该过滤他们应该有权访问的对象。我的问题是,当我查询对象时,是否将代码放在服务中以设置对象的权限,或者该代码是否应该存储在存储库中?如果用户是2个区域的成员,我应该将用户作为参数传递给服务,还是应该将用户的区域传递给服务?
答案 0 :(得分:3)
我会:
编写安全检查,使其可以应用于您喜欢的任何地方。这样,您可以随着需求的变化进行重构。
如果安全检查确实将始终应用,请将其放在存储库层中(或者更好,如果您的语言支持它,则在一个方面),以便多个服务将共享共同的安全性如果他们使用相同的存储库。否则将其置于服务中(或作为服务的一个方面)。
将整个用户对象传递给安全检查机制: