Отобразить / скрыть пункты меню в зависимости от пользователя, вошедшего в систему - PullRequest
0 голосов
/ 18 марта 2010

В моем веб-приложении я хотел бы показать ссылку меню «Администратор» только пользователям, которые были добавлены в базу данных в качестве администратора.

Как лучше всего это сделать в ASP.NET MVC 2?

В данный момент я делаю это, проверяя, существует ли пользователь в таблице базы данных Admin для каждой страницы. Очевидно, должен быть лучший способ сделать это.

Если это поможет, я использую Windows Auth.

1 Ответ

0 голосов
/ 18 марта 2010

Возможно, вы могли бы сохранить состояние администратора в переменной сеанса или что-то в этом роде, но более уместным было бы создать частичное представление с меню (если вы этого еще не сделали) и просто поставить там чек. Вы по-прежнему будете вызывать ее из базы данных при каждом запросе страницы, но без дублирования кода. И если у вас сейчас нет проблем с производительностью, один дополнительный звонок на самом деле не так уж и сложен.

Если у вас есть проблемы с производительностью, убедитесь, что вы оптимизируете свой собственный код, имеете все правильные индексы в БД и т. Д. Большую прибавку в производительности (особенно в проблемах, связанных с БД) обычно можно получить путем реструктуризации как все сделано, вместо что сделано.

UPDATE:
В ASP.NET MVC 2 на самом деле есть еще лучший способ сделать это, комбинируя Html.RenderAction() и AuthorizeAttribute (или, возможно, написать свой собственный унаследованный атрибут, который устанавливает флаг вместо возврата ошибки, когда пользователь не авторизован) , Таким образом вы минимизируете логику представления и будете лучше соответствовать принципам MVC.

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