Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Model view controller 在MVC中,授权代码的正确位置在哪里?_Model View Controller_Oop - Fatal编程技术网

Model view controller 在MVC中,授权代码的正确位置在哪里?

Model view controller 在MVC中,授权代码的正确位置在哪里?,model-view-controller,oop,Model View Controller,Oop,在MVC中,授权代码的正确位置在哪里? 控制器? 模型? 在视野中 到处都是?如果必须在M、V或c之间进行选择,c是正确的位置。但是,我推荐一种架构,在这种架构中,您的应用程序都包含在库中,而UI只是一层薄薄的饰面。最后从控制器调用堆栈,但代码不在控制器中 在MVC中,模型只是一个模型,或者说是一个“哑数据对象”。它被设计用来保持状态,不应该支配行为。视图是供用户交互的,也是“哑”视图;视图处理用户界面。控制器是行为所在的位置,或者在应用程序逻辑位于库中的情况下,控制器是行为的入口点。有意义吗?

在MVC中,授权代码的正确位置在哪里?
控制器?
模型?
在视野中


到处都是?

如果必须在M、V或c之间进行选择,c是正确的位置。但是,我推荐一种架构,在这种架构中,您的应用程序都包含在库中,而UI只是一层薄薄的饰面。最后从控制器调用堆栈,但代码不在控制器中

在MVC中,模型只是一个模型,或者说是一个“哑数据对象”。它被设计用来保持状态,不应该支配行为。视图是供用户交互的,也是“哑”视图;视图处理用户界面。控制器是行为所在的位置,或者在应用程序逻辑位于库中的情况下,控制器是行为的入口点。有意义吗?

型号

控制器只是通过不同的方式进行切换。视图仅用于。。。观看


因此,您应该在模型层中生成所有授权代码。理想情况下,一切都会很好。如果没有,那么控制器会将用户带到正确的登录框。

我赞成将其放在有意义的地方。我的大多数授权工作都是通过使用AuthorizeAttribute(或从中派生的属性)装饰控制器操作(甚至某些控制器)来处理的。在一些情况下——比如我的菜单——我求助于将授权检查放入视图代码本身,而不是在每个控制器中计算授权检查并在ViewData中向下传递标志。在一些情况下,模型的某些方面仅对特定角色可用,在这些情况下,我采用了一些方法来扩展模型,这些方法可以对当前用户和角色进行检查。

我认为授权是一个交叉问题。应该在一个地方-一个可以声明应用于需要的地方的方面。

控制器

您的视图应该只处理用户界面和显示 您的模型应该表示系统中的数据。 您的控制器应该处理系统如何工作的逻辑

授权用户涉及获取视图中提供的凭据,对照模型中的某种授权列表进行检查,然后执行检查

这是在控制器中完成的: 从视图中获取用户凭据 if(与模型返回匹配中的用户列表进行比较) 授权用户 其他的
拒绝访问

您对MVC的定义不正确。MVC中的M是最重要的部分,它不是一个哑数据对象。行为应该在M中,这是您的业务逻辑。我不清楚授权是否是业务逻辑的一部分。