【发布时间】:2012-08-18 07:31:20
【问题描述】:
我正在我的 .net 4.5 应用程序中实现基于声明的安全性。有很多障碍要跳过,但它基本上是有效的。
我唯一不喜欢的部分是我无法创建自己的属性。 ClaimsPrincipalPermissionAttribute 是密封的。为什么?
我总是在我的申请中做标记,例如:
[ClaimsPrincipalPermission(SecurityAction.Demand, Resource = "Foo", Operation = "Bar")]
而且由于我希望我的资源和操作字符串不会拼写错误并且易于重构,因此我创建了类,因此我可以这样做:
[ClaimsPrincipalPermission(SecurityAction.Demand, Resource = Resources.Foo, Operation = Operations.Foo.Bar)]
(请注意,由于不同的资源可能有不同的操作,操作本身是由资源子类化的。)
这一切都很好,很花哨,但每次都需要输入或复制/粘贴。我宁愿做这样的事情:
[DemandPermission(Resources.Foo, Operations.Foo.Bar)]
我可以创建这个属性,但我需要从 ClaimsPrincipalPermissionAttribute 继承,因为它是密封的,所以我不能。 :(
还有其他方法可以解决这个问题吗?也许我不需要继承,但我可以注册我自己的属性类型以便它在所有相同的地方工作吗?
【问题讨论】:
标签: c# wif custom-attributes .net-4.5 claims-based-identity