0

IIdentity接口暴露AuthenticationType了我想考虑的属性,因为如果用户使用 x509 或基本用户名/密码身份验证登录,情况会有所不同,你知道:

[PrincipalPermission(SecurityAction.Demand, Role = "BigBoss", AuthenticationType="basic")]
protected static void DoSomething() {}

但我不能。此外,两者PrincipalPermission都是PrincipalPermissionAttribute密封的(谢谢大家),所以我无法添加我需要的功能。这是出于某种特殊原因还是仅仅是设计缺陷?任何想法如何解决?

4

1 回答 1

1

尽管两者都与安全有关,但身份验证和授权实际上是独立的关注点,将授权直接耦合到身份验证机制通常不是一个特别好的主意。

如果您觉得添加这种耦合有令人信服的理由,那么您有两种可用的方法:

  1. 向您的主体添加一个角色以反映身份验证机制,然后在后者很重要时要求焦点角色和身份验证机制伪角色。
  2. 虽然PrincipalPermissionPrincipalPermissionAttribute是密封的,但没有什么能阻止你创建类似的类型来做你想做的事。

对于#2,您可以创建一个自定义属性,该属性创建一个自定义权限,PrincipalPermission而不是从头开始重新创建其所有逻辑。

于 2011-11-11T19:05:04.573 回答