【发布时间】:2013-03-11 15:06:54
【问题描述】:
我在我的 WebApi 项目中使用基于声明的授权,并且有一个方法可以检查当前身份是否经过身份验证。当我使用ClaimsPrincipal.Current 时,当前身份未经过身份验证,但当我使用Thread.CurrentPrincipal 时,它是。
ClaimsPrincipal.Current.Identity.IsAuthenticated; //False
Thread.CurrentPrincipal.Identity.IsAuthenticated; //True
这似乎很奇怪,尤其是因为 MSDN says ClaimsPrincipal.Current 只返回 Thread.CurrentPrincipal:
备注
默认情况下,返回 Thread.CurrentPrincipal。你可以改变这个 通过设置 ClaimsPrincipalSelector 属性来指定行为 调用委托以确定当前委托人。
谁能解释一下为什么ClaimsPrincipal 没有经过身份验证,而理论上两者都包含相同的身份?
【问题讨论】:
-
“默认情况下,” 对我来说暗示其他一些行为是可能的 - 你有没有裁定我们的?
-
No ClaimsPrincipalSelector 为空,所以使用默认值。
标签: c# asp.net-web-api .net-4.5 identity claims-based-identity