【问题标题】:ClaimsPrincipal.Current vs. HttpContext.Current.User?ClaimsPrincipal.Current 与 HttpContext.Current.User?
【发布时间】: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


    【解决方案1】:

    Identity 是当前经过身份验证的用户,principal 是运行代码的安全上下文。

    这篇文章是一个很好的解释,我觉得很有用http://msdn.microsoft.com/en-us/library/ftx85f8x.aspx

    【讨论】:

      猜你喜欢
      • 2013-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-26
      • 1970-01-01
      • 2017-05-20
      • 1970-01-01
      相关资源
      最近更新 更多