2013-07-15 27 views
0

我正在执行IPrincipal接口,并且role参数是String这一事实听起来很奇怪。我想这有很好的理由,但我想知道为什么。为什么IPrincipal.IsInRole参数是一个字符串?

+0

既然你认为这很奇怪,你必须记住一些其他类型,你必须认为它更符合逻辑。小心分享它? –

+0

不仅仅是思考其他类型,它只是我试图避免魔法字符串,如果我必须使用它,我想知道为什么。 –

回答

11

这是因为roleprovider是身份验证的可插入部分,因此您可以推出自己的(双关语意图)并提供用户角色成员身份的结果。

如果您认为基于角色的认证机制需要具有任意数量的命名角色,那么如果这是基于某种类型或硬编码的系统,那么这将不那么容易。所以使用一个字符串来匹配存储在某种方式下的角色实际上是可行的。

P.S. asp.net成员资格和认证系统总体上是一团糟,并且即将在即将到来的MVC5和Asp.Net更新中使用owin模式进行重大升级。

+2

+1只是双关语:D(也是一个很好的答案) – Mansfield

0

除了我的头顶,确定跨API的角色(例如Windows或Novell)的实现方式有很大不同。然而,一个共同点是有组名,并且string是正确的类型。

请参阅引擎盖下的IsInRole可以有许多不同的实现。其中一些查询Active Directory。

相关问题