O que poderia fazer com que o `UserManager` retorne o usuário errado?

Algo assustador está acontecendo no meu site MVC do ASP.NET Core 2.1.0. Enquanto eu estava navegando, de repente, isso mostra que estou logado como um usuário diferente (que também está navegando no site naquele momento).

Não consigo identificar se há um caso de uso específico que desencadeia isso, mas isso aconteceu duas vezes agora. Navegar para outras páginas ainda mostra que estou logado como outro usuário. Parece até que eu assumo as reivindicações do usuário no qual estou logado incorretamente.

Minha pergunta é:o que poderia fazer isso acontecer?

EDITAR: Eu mudei desde entãouserManager enotificationService para 'escopo' e esse problema ocorreu novamente, portanto, o possível problema relatado aqui não pode ser a causa.

Tentando analisar isso, acredito que o culpado pode ser a seguinte ligação em_Layout.cshtml:

@inject UserManager<ApplicationUser> userManager
@inject NotificationService notificationService
@inject CommunityService communityService
@{
    ApplicationUser user = await userManager.GetUserAsync( User );
}

O retornadouser é usado para mostrar informações do usuário e fazer chamadas paranotificationService ecommunityService. Eles também estavam mostrando dados referentes ao usuário incorreto (não eu).

Se importa, é assim queApplicationDbContext está configurado emStartup.cs:

// Add framework services.
services
    .AddDbContext<ApplicationDbContext>( options => options
        .UseLazyLoadingProxies()
        .UseSqlServer(_configuration.GetConnectionString( "DefaultConnection" ) ) );
services
    .AddIdentity<ApplicationUser, IdentityRole>()
    .AddEntityFrameworkStores<ApplicationDbContext>()
    .AddDefaultTokenProviders();

Lembrei que'escopo' é o tempo de vida recomendado para usar ao registrar o Entity Framework para injeção de dependência. AmbosNotificationService eCommunityService, no entanto, são registrados como 'transitórios' e solicitamApplicationDbContext através da injeção do construtor para acessar os dados.

services.AddTransient<CommunityService, CommunityService>();
services.AddTransient<NotificationService, NotificationService>();

Isso poderia ter algo a ver com isso? Atualmente, não entendo se isso pode fazer alguma diferença. Não consigo replicar esse problema.

questionAnswers(1)

yourAnswerToTheQuestion