如何管理ASP.NET MVC2中用户类型之间的重要功能差异

时间:2010-08-14 07:10:00

标签: asp.net-mvc asp.net-mvc-2 asp.net-membership

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

现在这意味着我有一个UserController和ProjectController,充满了身份验证属性(即客户端可以更改他的电子邮件,但没有其他类似的权限,客户端无法添加/删除/编辑项目,但可以浏览他们的内容)。

此外,根据用户类型/角色,我切换出菜单组件。我应该将我的控制器拆分为更窄的焦点,还是这是区域的候选者?我“觉得”我的大部分代码都在检查用户X是否可以根据他的角色和明确的每个项目权限执行操作Y.

PS。我多次重写这个主题,试图缩短它:\

1 个答案:

答案 0 :(得分:2)

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

  • ClientUserController

  • ClientProjectController

  • StaffUserController

  • StaffProjectController

这样拆分可以让您轻松拥有每种用户类型的专用控制器和视图。使用每个“Staff”控制器顶部的单个Authentication属性来保护访问权限。

通过设置approriate路由,您可以为每个控制器类型维护友好URL:例如

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