ASP.NET MVC: использовать существующую учетную запись или создать новый пользовательский контроллер? - PullRequest
1 голос
/ 25 марта 2009

Я создаю новое приложение ASP.NET MVC. До сих пор я использовал контроллер учетной записи для действий, связанных с учетной записью пользователя - Вход / Выход из системы, Активация (например, Регистрация, но я использую Регистрация для других действий на сайте, поэтому я переименовал его), Добавить / обновить контактную информацию , Однако до сих пор я концентрировался на административных представлениях пользователей.

Я нахожусь в точке, где я собираюсь начать создавать различные представления, которые будут видеть пользователи без прав администратора. Они довольно ограничены по сравнению с административным интерфейсом. Я склонен создавать новый набор представлений и связанный контроллер в «семействе» пользователей вместо использования представлений / контроллеров учетных записей. Это хорошая идея, или я должен придерживаться контроллера учетной записи? Мне кажется, что, поскольку это для обычных пользователей, это должен быть отдельный контроллер, так как учетная запись будет применяться как к обычным, так и к административным пользователям.

РЕДАКТИРОВАТЬ : После прочтения первой пары ответов мой рефакторинг вопрос:

Считаете ли вы, что контроллер учетной записи предназначен для административных действий, связанных с учетной записью пользователя, или для всех действий с учетной записью пользователя? Различаете ли вы представления / данные, относящиеся к членству / роли, и представления / данные, относящиеся к приложению, в степени создания нового контроллера.

Связано, но напрямую не отвечает на мой вопрос: Руководство по использованию контроллера учетных записей ASP.NET MVC?

Ответы [ 2 ]

1 голос
/ 25 марта 2009

Я не думаю, что здесь есть правильный или неправильный ответ, поэтому я выскажу свое мнение.

Технически, любое решение (расширение контроллера учетной записи или создание нового контроллера) будет работать просто отлично.

Так что я думаю, что это больше вопрос того, как пользователи воспринимают функциональность. Я думаю, что будет хорошей идеей следовать соглашению о том, что URI определяет контроллер (или наоборот, если вы предпочитаете).

Если, например, вы хотите, чтобы «административные» действия выполнялись по отдельному пути, тогда это должен быть отдельный контроллер. Возможно, вы захотите сделать это, например, если вы используете модуль IIS для аутентификации или если это облегчает анализ журналов.

С другой стороны, возможно, что пользователи воспринимают функции учетной записи и административные функции как часть одного и того же семейства действий, за исключением того, что некоторые пользователи имеют дополнительные функции. Если это так, то это говорит о том, что он должен находиться на том же пути в URI и, следовательно, быть частью одного и того же контроллера.

Подводя итог, я думаю, что это вопрос, который вы должны задать своему представителю пользователя, а не людям на этом сайте. :)

Обновление : Что касается вашего обновленного вопроса, я бы сказал, что вполне естественно ввести действие для изменения пароля пользователя на контроллере учетной записи, и что это действие может быть вызвано самим пользователем, а не просто администратор. Поэтому я бы не предположил, что контроллер аккаунта предназначен исключительно для административных задач. С другой стороны, ваш пример работы по сбору средств выходит далеко за рамки вопросов, связанных с членством, поэтому не ясно, относится ли он и к Учетной записи. Я все еще склоняюсь к «спросите своего представителя пользователя».

0 голосов
/ 25 марта 2009

В ASP.NET MVC вы обычно создаете элементы управления на основе типов данных, а не типов доступа. Например:

Вместо 2 /Controllers/UsersControl.cs и /Controllers/Admin/UsersControls.cs проще использовать один общий контроллер как для администраторов, так и для обычных пользователей - /Controllers/UsersController.cs (путем установки различных атрибутов [Authorize] и взгляды).

Я бы сохранил существующий AccountController.cs для инкапсуляции функциональности, связанной с учетной записью. И просто добавьте новый UsersController.cs для остальных функций, связанных с пользователями (которые могут иметь такие методы, как OnlineUsers и т. Д.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...