Cha*_*les 7 model-view-controller authorization controller model
我一直在为不同的MVC框架做很多教程,看起来很常见的是在Controller中进行授权.为什么?
我的想法是Controller应该只用于编排模型操作,处理重定向和处理错误事件.这些是依赖于特定请求的事情.将授权放入Controller中似乎只要在不同的Controller操作或不同的控制器中使用相同的Model操作时,您就必须复制授权.如果Auth在模型中,则对数据执行操作或状态更改有一致的要求.
我一直在谷歌搜索并查看其他问题,例如应该授权是模型还是控制器的一部分?但我真的不明白为什么它是公认的惯例.
是否有一个特定的原因我错过了将控制权放在控制器上的模型?
是否有一个特定的原因我错过了将控制权放在控制器上的模型?
嗯,我能想象的最常见的原因是懒惰.我并不是说在道德上,将一些授权概念放在一个更接近具体请求的层上,然后在模型层上进行差异化访问就更容易了.获得模型授权是一个更高的设计.
为了给答案添加一些更实用的建议,我认为你应该分析每个程序在哪里以及你想要引入什么授权.对此的需求可能(非常)不同.
然后,只有在下一步中,您应该考虑哪种设计最有利于引入授权和身份验证以满足这些需求.
授权作为一个完整的过程应该涉及控制器层和模型层。
但是,所有 logc(SQL 查询等)肯定应该发生在模型中。控制器是视图(表示)和模型之间的中间层。但是,您根本不能从该方案中丢弃控制器,因为控制器负责处理会话和 Cookie。如果没有这两件事,您的所有身份验证/授权逻辑都是无用的,因为它本质上是无状态的。会话和 Cookie 为其带来状态。此外,正如您正确提到的,控制器负责重定向。
| 归档时间: |
|
| 查看次数: |
1838 次 |
| 最近记录: |