【发布时间】:2015-01-29 22:09:34
【问题描述】:
我有一个 PHP MVC 应用程序。业务逻辑在服务层和领域模型中实现。我的问题是,我应该在哪里实施授权检查?在服务层?还是领域模型?
在关于服务层模式的讨论中,http://martinfowler.com/eaaCatalog/serviceLayer.html,Martin Fowler 更喜欢将“应用程序逻辑”与“业务逻辑”分开。前者进入服务层,后者进入领域对象。
我的一些授权规则很复杂。授权可能取决于当前用户、他们的角色、许多其他不相关对象的状态等。这些似乎属于域对象,或者在某些情况下属于这些对象的工厂。
但在其他情况下,规则非常简单。例如,“只有主管才能批准新的布告栏帖子”。在这些情况下,我很想检查服务层中的授权。它消除了安全要求,并且通过将它们放在(可模拟的)服务层侦听器中,我的代码变得更容易测试。
那么,问题是我应该在服务层中放置简单的授权检查,而在域对象中放置更复杂的授权检查吗?还是我把它分成两层来找麻烦?
【问题讨论】:
-
我删除了我之前的答案,因为我认为我的答案与验证(肯定属于域模型)更相关,而不是身份验证。这是一个与您类似的好问题:stackoverflow.com/questions/7261490/…
标签: php design-patterns authorization