我在 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 模块没有收到它。
我怎样才能收到用户身份名称?
我解决了这个问题。我是这样调试的:
由于我不确定用户凭据是否从 IIS 传递,因此我决定将请求 HTTP 标头从代码打印到日志文件。答案就在那里。我发现 IIS 可以使用基本身份验证。
AspNetCore 似乎不支持基本身份验证,因此我添加了一个中间件实现,用于解析“Authorization”标头中的信息并从中创建新的用户身份。
我自己实现了,但以下文章对我帮助很大:
https://blog.dangl.me/archive/http-basic-authentication-in-aspnet-core-projects/ https://blog.dangl.me/archive/http-basic-authentication-in-aspnet-core-projects/
https://learn.microsoft.com/en-us/aspnet/core/fundamentals/middleware https://learn.microsoft.com/en-us/aspnet/core/fundamentals/middleware
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)