gpt4 book ai didi

model-view-controller - 为什么身份验证通常在 MVC 的 Controller 中?

转载 作者:行者123 更新时间:2023-12-04 06:39:16 27 4
gpt4 key购买 nike

我已经为不同的 MVC 框架做了很多教程,在 Controller 中进行授权似乎非常典型。为什么?
我的想法是 Controller 应该只用于编排模型操作、处理重定向和处理错误事件。这些是依赖于特定请求的事情。将授权放在 Controller 中似乎每当您在不同的 Controller 操作或不同的 Controller 中使用相同的模型操作时都必须复制授权。如果 Auth 在模型中,您对数据执行操作或状态更改有一致的要求。
我一直在谷歌搜索并查看其他问题,例如 Should authorization be part of the model or controller?但我真的不明白为什么这是公认的约定。
我是否缺少将授权放在模型上的 Controller 中的特定原因?
在评论中总结几点:

  • Controller 负责改变模型层和当前 View 的状态。没有其他的。
  • 授权属于正在执行的操作,如果您遵循严格的 MVC 模式,这很可能是模型,并且 Controller 当然不负责授权使用模型操作。
  • Cookie 应该像任何其他数据存储一样对待:在模型中抽象和使用,而不是由 Controller 直接使用。
  • 身份验证和授权是不同的问题,尽管它们通常都在模型层中,因为它们通常涉及对数据存储(例如 cookie)中的值进行检查。
  • 最佳答案

    Is there a specific reason I'm missing for putting Authorization in the controller over the model?



    好吧,我能想象的最常见的原因是懒惰。我不是说道德上的意思,将一些授权概念放在更接近具体请求的层中,然后在模型层上进行差异化访问要容易得多。获得模型的授权是一种更高的设计。

    为了给答案添加一些更实用的建议,我认为您应该为每个程序分析您想要引入授权的位置和内容。对此的需求可能(非常)不同。

    那么只有在下一步中,您才应该考虑哪种设计最有利于引入授权和身份验证来满足这些需求。

    关于model-view-controller - 为什么身份验证通常在 MVC 的 Controller 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19457320/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com