Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.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
Asp.net mvc 如何管理ASP.NET MVC2中用户类型之间的显著功能差异_Asp.net Mvc_Asp.net Mvc 2_Asp.net Membership - Fatal编程技术网

Asp.net mvc 如何管理ASP.NET MVC2中用户类型之间的显著功能差异

Asp.net mvc 如何管理ASP.NET MVC2中用户类型之间的显著功能差异,asp.net-mvc,asp.net-mvc-2,asp.net-membership,Asp.net Mvc,Asp.net Mvc 2,Asp.net Membership,我想我可能把我的控制器弄得一团糟。我有一个相当简单的网站,允许“Staff”或“Client”类型的用户查看项目。员工可以访问所有项目,可以添加和删除项目,添加和删除用户,为客户分配项目权限等 就目前而言,这意味着我有一个UserController和ProjectController,其中充斥着身份验证属性(例如,客户端可以更改其电子邮件,但除了权限之外没有其他功能,客户端不能添加/删除/编辑项目,但可以浏览其内容) 而且,根据用户类型/角色,我会切换出菜单组件。我应该将我的控制器分开,以获得

我想我可能把我的控制器弄得一团糟。我有一个相当简单的网站,允许“Staff”或“Client”类型的用户查看项目。员工可以访问所有项目,可以添加和删除项目,添加和删除用户,为客户分配项目权限等

就目前而言,这意味着我有一个UserController和ProjectController,其中充斥着身份验证属性(例如,客户端可以更改其电子邮件,但除了权限之外没有其他功能,客户端不能添加/删除/编辑项目,但可以浏览其内容)

而且,根据用户类型/角色,我会切换出菜单组件。我应该将我的控制器分开,以获得更窄的焦点,还是这是一个候选区域?我“觉得”我的大部分代码都是基于用户X的角色和每个项目的显式权限来检查用户X是否可以执行操作Y


顺便说一句,为了缩短篇幅,我多次重写了这个主题:\

您是否考虑过像这样拆分控制器:

  • 客户端用户控制器

  • 客户端项目控制器

  • StaffUserController

  • 员工项目控制器

这样的拆分将允许您轻松地为每种用户类型设置专门的控制器和视图。在每个“Staff”控制器的顶部使用单个身份验证属性以确保访问安全

通过设置合适的路由,您可以维护每个控件类型的友好URL:例如

  • /用户/编辑(显示所有用户详细信息, 但仅允许编辑电子邮件字段)
  • 职员/用户/编辑(允许编辑所有 用户字段)

是的,这可能是最好的选择。我确实是从一个ie.UserAdminController开始的,但我最终发现了太多的重复。我看看能不能把它清理一下。你可以在控制器之间共享公共功能。。。请记住,控制器实际上只是类——只有命名约定(使框架能够调用正确的方法)使它们看起来“神奇”。此外,千万不要低估使用不同视图模型实现不同功能的能力。。主控制器代码可以保持不变,但呈现给视图的数据(包括显示类型属性等)可能会根据您决定呈现的视图和传递的数据(真实数据和元数据)而有所不同。