在MVC中,放置授权码的正确位置在哪里?

时间:2009-03-11 15:06:07

标签: model-view-controller oop

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

到处都是?

5 个答案:

答案 0 :(得分:3)

我投票把它放在合理的地方。我的大多数授权内容都是通过装饰控制器操作(甚至是一些控制器)和AuthorizeAttribute来处理的 - 或者是从它派生的属性。在少数情况下 - 比如我的菜单 - 我已经将授权检查放在视图代码中,而不是在每个控制器中计算并在ViewData中传递标记。在某些情况下,模型的某些方面仅适用于特定角色,在这些情况下,我使用可以接受当前用户和角色并在那里进行检查的方法来扩展模型。

答案 1 :(得分:1)

我认为授权是一个贯穿各领域的问题。应该在一个地方 - 可以在需要时以声明方式应用的方面。

答案 2 :(得分:1)

控制器!

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

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

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

答案 3 :(得分:0)

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

在MVC中,模型只是一个模型,或者是一个“哑数据对象”,如果你愿意的话。它旨在保持状态,不应该指示行为。视图供用户与之交互,也是“哑”;视图处理UI。控制器是行为所在的位置,或者是应用程序逻辑位于库中的行为的入口点。有意义吗?

答案 4 :(得分:0)

模型。

控制器仅用于通过不同方式进行切换。视图仅供...查看。

因此,您应该在Model层中制作所有授权码。理想情况下,一切都会正常工作。如果没有,那么控制器将把用户带到正确的登录框。

相关问题