【发布时间】:2013-11-08 06:05:35
【问题描述】:
在 MVC 中,这两个有什么区别?
它们看起来相同,甚至返回相同的类型/类System.Web.Security.RolePrincipal,但有一些细微之处。
例如。以下代码在针对通过 ClaimsPrincipal.Current 生成的实例调用时会引发各种错误
cp.FindFirst(ClaimTypes.Name); //{"Unable to connect to SQL Server database."} <--HUH!?
cp.Claims; //{"Value cannot be null.\r\nParameter name: username"}
当 cp 改为这样时,上述方法有效:
var cp = System.Web.HttpContext.Current.User
通过快速查看深入了解私人成员时,我可以看到他们都有相同的 Claim 字典。但是,无论出于何种原因,当针对 ClaimsPrincipal.Current 返回的对象调用时,公共属性都会爆炸
帮助 - 这是为什么呢!?这让我发疯了。
=============编辑==================
该睡觉了。
IPrincipal 支持多个身份。它需要某种商店。 IIdentity 返回一个 ClaimsIdentity 的实例,不需要 store。
我只是钻错了属性。他们两个的形状几乎相同,即。相同的属性和方法,我把它们弄糊涂了。
【问题讨论】:
标签: asp.net-mvc model-view-controller wif claims-based-identity azure-acs