Asp.net core User.Identity.IsAuthenticated在解析程序中始终返回false

Asp.net core User.Identity.IsAuthenticated在解析程序中始终返回false,asp.net-core,Asp.net Core,我正在尝试在我的ASP.NET核心项目中实现多租户。我可以从url捕获子域并从中确定租户,但是当我想从登录的用户获取租户时,user.Identity.IsAuthenticated始终返回false,即使用户已登录。代码如下: public class CachingTenantResolver : MemoryCacheTenantResolver<Tenant> { private readonly ApplicationDbContext _context;

我正在尝试在我的ASP.NET核心项目中实现多租户。我可以从url捕获子域并从中确定租户,但是当我想从登录的用户获取租户时,user.Identity.IsAuthenticated始终返回false,即使用户已登录。代码如下:

public class CachingTenantResolver : MemoryCacheTenantResolver<Tenant>
{
    private readonly ApplicationDbContext _context;
    //private readonly ILoggerFactory _loggerFactory;
    public CachingTenantResolver(
        ApplicationDbContext context, IMemoryCache cache, ILoggerFactory loggerFactory)
         : base(cache, loggerFactory)
    {
        _context = context;
        //_loggerFactory = loggerFactory;
    }

    // Resolver runs on cache misses
    protected override async Task<TenantContext<Tenant>> ResolveAsync(HttpContext context)
    {

        Tenant tenant = new Tenant { Name = "DefaultTenant", Domain = "www" };

        if(context.User.Identity.IsAuthenticated)
        {
            string userId = context.User.FindFirst(ClaimTypes.NameIdentifier).Value;
            Account account = _context.Accounts.Include("Tenant").FirstOrDefault(i => i.IdentityUserID == userId);
            tenant = account.Tenant;
        }
        else
        {
            var subdomain = context.Request.Host.Host.ToLower().Split('.');

            var tempTenant = await _context.Tenants
                .FirstOrDefaultAsync(t => t.Domain == subdomain[0]);

            if (tempTenant!=null)
            {
                tenant = tempTenant;
            }
        }
        return new TenantContext<Tenant>(tenant);
    }
//...the rest of the resolver

我错过了什么?据我所知,HttpContext应该包含用户信息

确保在多租户注入之前调用app.UseAuthentication。

可以提供基类吗?从哪里获得http上下文?通常http上下文仅在端点中可用。当您想在该范围之外访问它时,必须注册并注入IHttpContextAccessor。@我相信它来自Saaskit.Multitenance包。我还没有深入了解他们的代码,但我想知道如何在controller/razor之外捕获用户登录状态。当我在这里尝试context.User.Identity.IsAuthenticated时,它总是返回false。我发现了问题。在调用ConfigureServices方法中的Multitenance injection.injection之前,我应该添加app.UseAuthentication吗?