2010-09-07 168 views
2

假設我們有兩個組「Admins」和「Users」。管理員可以使用服務中可用的任何操作,但用戶只能使用其中的一些操作。WCF RIA服務授權

我應該將「管理員」組添加到每一個操作,或者如果我只是寫在類的頂部會做詭計嗎?

謝謝。

回答

4

多個RequiresRole屬性與AND結合,而傳遞給單個屬性的多個角色進行OR運算。在你的情況下,你會想要或者屬性(「用戶」或「管理員」),所以你必須將「管理員」應用於每一種方法。

// 「系統管理員」 & & 「用戶」,等同於使用一類屬性爲 「系統管理員」

[RequiresRole( 「管理」),RequiresRole( 「用戶」)]

// 「管理員」|| 「用戶」

[RequiresRole( 「管理員」, 「用戶」)]

+0

感謝您的回答。如果我爲每個用戶分配他/她是否是管理員,我將不必將用戶角色屬性應用於每個操作。對? – mrtaikandi 2010-09-08 07:28:54

+0

恩......我不這麼認爲。您可能能夠在DomainService級別應用「用戶」(您必須是用戶才能訪問任何內容),然後在單獨的操作(您必須是用戶和管理員才能使用這些方法)上選擇性地應用「管理員」。我不認爲有一種好的方式來說「除非我指定其他東西,否則您必須是管理員才能使用這些方法」。 – 2010-09-08 21:14:10

0

我有同樣的問題。不幸的是,你必須在每種方法上設置角色。或者,您可以使用saf-framework來實施基於權限的授權。否則,我建議你覆蓋你的域服務的BeforeSubmit()方法,並在那裏檢查你的對象的訪問以避免每個方法的過多屬性。

例如,您可能想要更改訪問策略,並且不希望通過每種方法都執行此操作。