2010-08-12 2 views
0

У меня есть две роли, которые сейчас используются на моем сайте, автор & admin. Авторы не могут получить доступ к функциям администрирования пользователей. Однако они должны иметь возможность редактировать определенные части своего профиля. В настоящее время администратор может редактировать все части профиля пользователя. Например:Условный/ограниченный доступ в контроллере/виде? (MVC2)

employee ID [admin] 
display name [author,admin] 
roles   [admin] 

Я хотел бы использовать код, если это возможно. Я не уверен, какое лучшее решение будет здесь. Есть 2 вещи, чтобы иметь дело с

  1. Только что позволяет пользователю редактировать свой собственный профиль, а не другие
  2. Ограничение поля, которые, что пользователь может редактировать против каких полей администратор может редактировать

Я думаю, # 1 лучше всего достигается специальным атрибутом Authorize (у меня уже есть один, который я могу расширить дальше). Если у вас есть лучший подход, делитесь. И №2 я не уверен, посмотри модель? У меня есть разрешенные поля для пользователя, использующего неполный класс, который будет отличаться для каждой роли.

ответ

1

Ваше решение для №1 находится на месте, вам необходимо использовать AuthorizeAttribute.

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

Некоторые псевдо-код на ваш взгляд (или переместить его в частичный вид):

if administrator 
    render employee ID text box 
if administrator || author 
    render display name text box 
if administrator 
    render roles check list 

Таким образом, вы будете нуждаться, чтобы контролировать, как определить, является ли пользователь в «роли». Вы можете использовать ASP.NET's Membership Provider или перевернуть что-то свое.

+0

Правда. И похоже, что UpdateModel() имеет третий/четвертый параметры, поэтому я могу явно включать/исключать свойства, которые пользователь должен/не должен обновлять. благодаря – ryan