根据ASP.NET MVC中的角色分离功能

时间:2010-05-19 15:27:47

标签: asp.net-mvc design-patterns architecture

我正在寻找一种优雅的模式来解决这个问题:

我的系统中有几个用户角色,对于我的许多控制器操作,我需要处理略有不同的数据。

例如,点击

/Users/Edit/1

这允许Moderator编辑user的电子邮件地址,但Administrator可以编辑用户的电子邮件地址和密码。

我想要一种设计,用于分隔GETPOST的两个不同的操作代码位。

我到目前为止提出的解决方案是:

  • 在每个方法中切换,但是当我想在POST上使用不同的模型参数时,这并没有什么帮助:(
  • 自定义控制器工厂,从控制器名称和当前用户角色中选择UsersController_ForModeratorsUsersController_ForAdmins而非UsersController
  • 自定义动作调用者,以与上面类似的方式选择Edit_ForModerators方法
  • 拥有一个IUsersController并在我的IoC容器中注册一个不同的实现,作为基于Role的命名实例
  • 使用Castle DynamicProxy在运行时构建控制器的实现,并将方法操作为基于角色的实现方法

我更喜欢命名的IoC实例路由atm,因为它意味着我的所有网址/路由将无缝地工作。

想法?建议?

1 个答案:

答案 0 :(得分:0)

呜,没有答案。这是我对IoC方法的尝试,我想我会继续这样做,除非有人有任何其他想法。

Segregating Controller Logic Based on User Role in ASP.NET MVC