我一直在为不同的 MVC 框架做很多教程,在 Controller 中进行授权似乎很典型。为什么?
我的想法是控制器应该只用于编排模型操作、处理重定向和处理错误事件。这些是依赖于特定请求的东西。将授权放在控制器中似乎每当您在不同的控制器操作或不同的控制器中使用相同的模型操作时,您都必须复制授权。如果 Auth 在模型中,则您对对数据执行操作或状态更改有一致的要求。
我一直在谷歌搜索并查看其他问题,例如授权应该是模型还是控制器的一部分?但我真的不明白为什么这是公认的约定。
我是否缺少将授权放在模型上的控制器中的特定原因?
总结评论中的要点:
- 控制器负责改变模型层和当前视图的状态。没有其他的。
- 授权属于执行操作的地方,如果您遵循严格的 MVC 模式,这很可能是模型,并且控制器当然不负责授权使用模型操作。
- Cookie 应该像任何其他数据存储一样对待:在模型中抽象和使用,而不是直接由控制器使用。
- 身份验证和授权是独立的问题,尽管它们通常都在模型层中,因为它们通常涉及对数据存储中的值(例如 cookie)的检查。