为什么IPrincipal.IsInRole参数是一个字符串?

时间:2013-07-15 12:05:26

标签: c# .net

我正在实施IPrincipal界面,role参数是String的事实听起来很奇怪。我想有充分的理由,但我想知道原因。

2 个答案:

答案 0 :(得分:11)

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

如果您认为基于角色的身份验证机制需要具有任意数量的命名角色,那么如果这基于某些类型或硬编码系统,则这不会那么容易。因此,使用字符串来匹配以某种方式存储的角色实际上可以正常工作。

P.S。 asp.net成员资格和身份验证系统整体上是一团糟,即将使用owin模式在即将到来的MVC5和Asp.Net更新中获得重大升级。

答案 1 :(得分:0)

在我的脑海中,确定跨API(例如Windows或Novell)的角色的实现是完全不同的。但是,一个共同点是有组名,而string是正确的类型。

请注意,IsInRole可以有许多不同的实现。其中一些查询Active Directory。