【问题标题】:Where to place autorisation code在哪里放置授权码
【发布时间】:2015-01-29 22:09:34
【问题描述】:

我有一个 PHP MVC 应用程序。业务逻辑在服务层和领域模型中实现。我的问题是,我应该在哪里实施授权检查?在服务层?还是领域模型?

在关于服务层模式的讨论中,http://martinfowler.com/eaaCatalog/serviceLayer.html,Martin Fowler 更喜欢将“应用程序逻辑”与“业务逻辑”分开。前者进入服务层,后者进入领域对象。

我的一些授权规则很复杂。授权可能取决于当前用户、他们的角色、许多其他不相关对象的状态等。这些似乎属于域对象,或者在某些情况下属于这些对象的工厂。

但在其他情况下,规则非常简单。例如,“只有主管才能批准新的布告栏帖子”。在这些情况下,我很想检查服务层中的授权。它消除了安全要求,并且通过将它们放在(可模拟的)服务层侦听器中,我的代码变得更容易测试。

那么,问题是我应该在服务层中放置简单的授权检查,而在域对象中放置更复杂的授权检查吗?还是我把它分成两层来找麻烦?

【问题讨论】:

  • 我删除了我之前的答案,因为我认为我的答案与验证(肯定属于域模型)更相关,而不是身份验证。这是一个与您类似的好问题:stackoverflow.com/questions/7261490/…

标签: php design-patterns authorization


【解决方案1】:

好的,所以我将身份验证代码移至服务层,发现只有几个实例仍然需要在模型中进行额外检查。为了保持一致性,我也可以将这些检查拉入服务层,但会牺牲性能,但到目前为止我还没有感觉到需要。

【讨论】:

    猜你喜欢
    • 2023-01-29
    • 2010-10-12
    • 2021-12-22
    • 2015-10-31
    • 2021-10-10
    • 1970-01-01
    • 2019-08-11
    • 2015-09-19
    • 1970-01-01
    相关资源
    最近更新 更多