2009-12-07 45 views
1

RIA服務允許您將屬性添加到域服務方法,如:RequiresRole(「Admin」)。這將自動檢查調用該方法的用戶是否具有正確的安全性。我想爲一個實體上的某個屬性做類似的事情。例如,只有角色「經理」中的用戶纔可以更改「費率」屬性,但任何用戶都可以更改「評論」屬性。這可能嗎?您可以使用RIA Services將實體添加到實體屬性中嗎?

回答

0

您可以使用Custom Validation attribute來做到這一點。您可以創建一個屬性,例如RequiresManagerRole,它將檢查用戶是否處於Manager角色,如果用戶不是,則不允許更改。

但是這對用戶來說可能不是一個很好的體驗。您可能想要以某種方式綁定表單中的只讀屬性,以確定該屬性是否可編輯。您可以使用IValueConverter完成此操作,並在您的值轉換器中檢查用戶的角色以確定它是否只讀。

更新:好的,我覺得布拉德看到了這個問題,並wrote this blog post to address it。這應該解決你想要做的事情,但採取不同的方法。

1

支持屬性安全的更好方法是通過重寫DomainService.Query方法,這樣可以避免加載大量過多的數據。博客更多關於它here

相關問題