我在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模块可能没有收到它。 如何收到用户身份名称?
答案 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