2009-12-07 1 views
1

Услуги RIA позволяют добавлять атрибут к методу службы домена, например: RequiresRole («Admin»). Это автоматически проверяет, имеет ли пользователь, вызывающий этот метод, правильную защиту. Я хотел бы сделать что-то подобное для свойства объекта. Например, только пользователям в роли «Менеджер» разрешено изменять свойство «Rate», но любой пользователь может изменить свойство «Комментарии». Это возможно?Можете ли вы добавить безопасность для объекта Property с услугами RIA?

ответ

0

Вы можете сделать это, используя Custom Validation attribute. Вы можете создать атрибут, например RequiresManagerRole, который будет проверять, находится ли пользователь в роли Менеджера и не разрешает изменение, если пользователь не был.

Это, возможно, не очень хороший опыт для пользователя. Возможно, вам захочется каким-то образом связать свойство readonly в форме, чтобы выяснить, доступно ли свойство. Возможно, вы сможете это сделать с помощью IValueConverter и в конверторе значений проверить роль пользователя, чтобы определить, является ли он только для чтения.

Обновление: ОК Я думаю, что Брэд увидел этот вопрос и wrote this blog post to address it. Это должно касаться того, что вы хотите сделать, но использует другой подход к нему.

1

Лучшим способом обеспечения безопасности для свойств является переопределение метода DomainService.Query, таким образом вы избежите загрузки большого количества избыточных данных. Более подробно об этом here.