c# - 在 Asp.net Core 的 startup.cs 中获取用户名

标签 c# asp.net-core audit.net

我正在使用 Asp.net Core 授权,我需要在 startup.cs 中获取用户名,但我得到的是空值。

public void ConfigureServices(IServiceCollection services)
{        
    // some code here
    services.AddHttpContextAccessor();
    services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();
    services.AddHttpContextAccessor();
            services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();
            Audit.Core.Configuration.Setup()
                .UseEntityFramework(_ => _
                    .AuditTypeMapper(t => typeof(AuditLog))
                    .AuditEntityAction<AuditLog>((ev, entry, entity) =>
                    {
                        var svcProvider = services.BuildServiceProvider();
                        var httpContext = svcProvider.GetService<IHttpContextAccessor>().HttpContext;

                        entity.AuditData = JsonConvert.SerializeObject(entry);
                        entity.EntityType = entry.EntityType.Name;
                        entity.AuditDate = DateTime.Now;
                        entity.AuditUser = httpContext.User.Identity.Name;
                    })
                .IgnoreMatchedProperties(true));
}

最佳答案

我发现了为什么 httpContext.User.Identity.Name 总是空的问题。对于每个对服务器的请求, header 都应该有 Authorization header ,如下所示:

Key                Value
Authorization      Bearer ZQ0QZFANcPogvA...

没有 Bearer httpContext 总是空的。不错的访问这个link

关于c# - 在 Asp.net Core 的 startup.cs 中获取用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53395425/

相关文章:

c# - 重载方法以支持引用类型和可空类型

c# - 为什么我的 Dictionary<string, string> 默认不区分大小写?

c# - 如何在Docker Compose中等待MSSQL?

c# - 在 Audit.Net 中有没有办法使用多个输出提供程序?

c# - Audit.NET Entity Framework Core - 相关实体管理

c# - 有没有办法在 C# 中使用 XML 轴属性?

c# - 将数据写入标签

c# - 带有 ASP.NET Core 3 的 Entity Framework 6.3

templates - 如何在 ASP.NET Core 2.1 中向 Visual Studio 添加新的 Razor 页面模板?

entity-framework - 如何使用 Audit.NET Entity Framework Data Provider 保存 Audit.NET WebAPI 审计日志?