Отдельная функциональность в зависимости от роли в ASP.NET MVC - PullRequest
2 голосов
/ 19 мая 2010

Я ищу элегантный шаблон для решения этой проблемы:

У меня есть несколько пользовательских ролей в моей системе, и для многих моих действий контроллера мне нужно иметь дело с немного другими данными.

Например, взять

/Users/Edit/1

Это позволяет Moderator редактировать адрес электронной почты user s, но Administrator s редактировать адрес электронной почты и пароль пользователя.

Я бы хотел разработать схему для разделения двух разных битов кода действия для GET и POST.

Решения, которые я придумала до сих пор:

  • Переключение внутри каждого метода, однако это не очень помогает, когда мне нужны разные аргументы модели на POST: (
  • Фабрика пользовательских контроллеров, которая выбирает UsersController_ForModerators и UsersController_ForAdmins вместо просто UsersController из имени контроллера и текущей роли пользователя
  • Вызывающий пользовательский экшн, который выбирает метод Edit_ForModerators аналогично указанному выше
  • Иметь IUsersController и зарегистрировать другую реализацию его в моем контейнере IoC в качестве именованного экземпляра на основе роли
  • Сборка реализации контроллера во время выполнения с использованием Castle DynamicProxy и манипулирование методами с использованием реализаций на основе ролей

Я предпочитаю именованный атм маршрута IoC, так как все мои URL / маршрутизация будут работать без проблем.

Идеи? Предложения?

1 Ответ

0 голосов
/ 19 мая 2010

Ву, ответов нет. Вот моя попытка подхода IoC, я думаю, что я пойду с этим, если у кого-то нет других идей.

Разделение логики контроллера на основе роли пользователя в ASP.NET MVC

...