ASP .NET Core IIS主机用户标识名为空,IsAuthenticated = false

时间:2017-10-02 15:06:17

标签: c# iis asp.net-core web-hosting

我在IIS上运行ASP .NET Core dll(使用AspNetCoreModule)

使用以前的ASP .NET,我可以获得用户身份名称:

HttpContext.Current.User.Identity.Name

因为它是在IIS上下文中直接调用的。

对于ASP .NET Core,结果为null:

this.Request.User.Identity.Name

似乎IIS没有转发它,或者我的AspNetCore模块可能没有收到它。 如何收到用户身份名称?

1 个答案:

答案 0 :(得分:2)

我解决了这个问题。这是我调试它的方式:

由于我不确定是否从IIS传递了用户凭据,因此我决定将代码中的Request HTTP头打印到日志文件中。答案就在那里。我发现IIS可以使用基本身份验证。

AspNetCore似乎不支持基本身份验证,因此我添加了一个中间件实现,用于解析来自'授权'标题并从中创建新的用户标识。

我自己实现了,但以下文章对我帮助很大:

https://blog.dangl.me/archive/http-basic-authentication-in-aspnet-core-projects/

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/middleware