考虑下面的代码行中我的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