考慮下面的代碼行中我的ServiceContract的每一個操作正在進入:使用自定義屬性創建角色檢查
if (!Roles.IsUserInRole("Administrators"))
throw new Exception("You are not authorized to perform this operation");
在未來,我想補充的不僅僅是這一點,我可能要在某處記錄失敗的呼叫。這意味着我必須改變我擁有的每個操作中的行爲。
我想要做的是創建一個自定義屬性,我可以在OperationContracts:RequireMinimumRoleAttribute
上看到如下所示的結果:[RequireMinimumRole("Administrators"]
。
首先,我希望它的行爲像MVC中的過濾器上下文,我想在之前檢查角色的實際操作被調用。這可能嗎?
第二,我想要另一個屬性,我把我的ServiceContract:FallbackRequireMinimumRoleAttribute
這將用於如果一個RequireMinimumRoleAttribute
沒有指定某個操作。
例
服務合同
[ServiceContract]
public class ICalculator
{
[OperationContract]
public int Add(int a, int b);
[OperationContract]
public string Information();
}
實施
[FallbackRequireMinimumRole("Users")]
public class Calculator : ICalculator
{
[RequireMinimumRole("Administrators")]
public int Add(int a, int b) { return a + b; }
public string Information() { return "This is a calculator service"; }
}
在這種情況下Add
需要管理priviligies和Information
操作只需要用戶特權。
這可能嗎?如果是這樣,怎麼樣?
您正在使用哪種身份驗證和角色配置文件機制? – 2011-03-30 09:44:33
我正在使用asp.net會員。 – 2011-03-30 13:08:01