IIdentity
接口公开了我想要考虑的AuthenticationType
属性,因为如果用户使用x509或基本用户名/密码auth登录,情况会有所不同,您知道:
[PrincipalPermission(SecurityAction.Demand, Role = "BigBoss", AuthenticationType="basic")]
protected static void DoSomething() {}
但我不能。此外,PrincipalPermission
和PrincipalPermissionAttribute
都是密封的(谢谢你们),所以我无法添加我需要的功能。这是出于某种特殊原因还是仅仅是设计上的缺陷?任何想法如何解决?
答案 0 :(得分:1)
尽管两者都与安全性有关,但身份验证和授权实际上是单独的问题,将授权直接与身份验证机制联系起来通常不是一个特别好的主意。
如果您觉得有充分的理由要添加这样的耦合,那么您可以使用以下几种方法:
PrincipalPermission
和PrincipalPermissionAttribute
被封存时,没有什么能阻止您创建符合您需要的类似类型。对于#2,您可以创建一个自定义属性来创建自定义权限,该权限包装PrincipalPermission
而不是从头开始重新创建所有逻辑。