基于用户角色切换ASP.NET MVC视图的最佳实践

时间:2011-04-26 18:28:12

标签: asp.net-mvc-3

我知道这个问题的标题听起来像以前曾经问过的几十个,但我对我有一点点扭曲。相关站点不使用成员资格角色,而是具有自定义安全层,用于评估与给定用户关联的粒度权限。根据有关用户的信息,我们会确定给定用户是供应商关联企业还是客户

我遇到的问题是这三个功能角色在UI中各有不同的体验。有一些重叠,但是有足够的区别,进行安全检查以操纵模型和视图的内容将是麻烦的。

我假设我可以:

  1. 使用MVC区域将我的应用程序分成功能单元(我从未玩过它)或
  2. 坚持模型中的逻辑和视图中的许多if...then块(或HtmlHelpers隐藏它并使其看起来像我不在我的视图中放置逻辑),或者
  3. 将应用程序物理拆分为三个应用程序,每个应用程序都在自己的主机上运行(customer.domain.com,vendor.domain.com,affiliate.domain.com)。
  4. 最后一个选项是迄今为止最丑陋的 - 很多重复的代码,我给自己增加了在www主机上运行的流量控制应用程序的任务。

    我希望SO上的某个人有类似的情况,可以提供有关如何处理这个问题的建议。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

这取决于场景。如果您有很多共享视图,只需要很少的更改(例如精简客户,客户,高级客户)使用条件。如果您有许多完全不同的视图(您的示例非常适合此类别 - 供应商,关联企业,客户)使用区域。或者那些混合物。根据您的描述,我认为区域将为您提供很好的服务。

物理上分成多个应用程序对于极大的项目非常有效,但我觉得这不是你的情况。