Он восстанавливает файлы cookie пользователей с обновленными утверждениями. Если вы вызовете этот метод с другим пользователем, он выйдет из системы и войдет в систему переданного пользователя.

о довольно страшное происходит на моем сайте ASP.NET Core 2.1.0 MVC. В то время как я просматривал, внезапно это показывает, что я вошел в систему как другой пользователь (который также случайно просматривал сайт в то время).

Я не могу точно определить, есть ли конкретный вариант использования, который вызывает это, но это уже дважды происходило. Переход на другие страницы по-прежнему показывает, что я вошел как другой пользователь. Даже кажется, что я беру на себя претензии пользователя, которого я неправильно вошел как.

Мой вопрос:что могло бы сделать это?

РЕДАКТИРОВАТЬ: С тех пор я изменилсяuserManager а такжеnotificationService в «область действия», и эта проблема возникла снова, поэтому потенциальная проблема, о которой здесь сообщается, не может быть причиной.

Пытаясь разобраться в этом, я считаю, что виновником может быть следующий вызов в_Layout.cshtml:

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

Возвращенныйuser используется для отображения информации о пользователе и выполнения вызововnotificationService а такжеcommunityService, Они также показывали данные, относящиеся к неправильному (не мне) пользователю.

Если это имеет значение, это какApplicationDbContext настроен вStartup.cs:

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

Я вспомнил, что«scoped» - это рекомендуемое время жизни для использования при регистрации Entity Framework для внедрения зависимостей., ОбеNotificationService а такжеCommunityServiceоднако, зарегистрированы как «переходные» и запросApplicationDbContext через конструктор для доступа к данным.

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

Может ли это иметь какое-либо отношение к этому? В настоящее время я не понимаю, может ли это иметь какое-либо значение. Я не могу воспроизвести эту проблему.

Ответы на вопрос(1)

Ваш ответ на вопрос