只是想了解这里的区别。我将我的ASP.Net Core Vue.js应用程序从Win 7桌面移到了Win服务器上,但它崩溃了
User.Identity.Name
所以现在该值为空。
所以我将其更改为
System.Security.Principal.WindowsIdentity.GetCurrent()。Name
,它又可以在我的台式机和Win服务器上正常工作了。
有什么区别,我应该继续使用后者吗?
答案 0 :(得分:0)
不。它们是完全不同的东西。 HttpContext.User
是通过特定用户身份验证创建的ClaimsPrincipal
。 System.Security.Principal.WindowsIdentity
是应用程序池使用的主体。这样,它对于应用程序将是一个常数,而HttpContext.User
将是向您的应用程序发出请求的实际用户,前提是他们已通过身份验证。
我认为人们在本地开发和使用Windows身份验证时会感到困惑。在那种特定情况下,两者将是相同的,因为IIS Express在您的本地用户帐户下运行,这当然也是Windows对您进行身份验证的方式。在几乎所有其他情况下,它们都会有所不同,并且很明显,System.Security.Principal.WindowsIdentity
不是您想要的。
现在,关于User.Identity.Name
为空的原因,您可能希望通过Windows进行身份验证,但尚未为该应用启用Windows身份验证,这意味着您实际上尚未登录。右键单击项目( s),选择“属性”,然后转到“调试”选项卡。在屏幕底部,确保选中了“启用Windows身份验证”。如果您的网站上有不需要授权的任何部分,请确保还选中了“启用匿名身份验证”,或者可以取消选中“启用匿名身份验证”,以强制对网站的所有访问进行授权。