将ASP.Net Identity 2提供程序模型与普通Authorize
属性结合使用。ASP.Net Identity 2,HttpRequestBase.LogonUserIdentity
匿名访问为真,Windows身份验证被禁用。
HttpRequestBase.IsAuthenticated
将返回true,但HttpRequestBase.LogonUserIdentity
不会返回实际的ClaimsIdentity
,而是返回一个模拟用户(因为我在本地运行IIS Express)。
来自提供者的实际认证并返回的ClaimsIdentity
可通过例如
HttpContext.Current.User...
和/或System.Threading.Thread.CurrentPrincipal...
问:为什么不通过HttpRequestBase.LogonUserIdentity
?
试想一下'LogonUserIdentity'这个名字就暗示着“用户身份认同”;-) – Daniel 2014-08-29 10:03:46
它的确如此!名称具有误导性,同样的方式'IdentityUser.LockoutEnabled'不是用户当前被锁定的标志。命名很难并导致问题。 – trailmax 2014-08-29 10:05:31