Microsoft Identity - удаление пользователя из роли, но пользователь по-прежнему имеет доступ до выхода

ApplicationDbContext _context = new ApplicationDbContext();
UserManager<ApplicationUser> _userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(_context));

Я удаляю пользователя из роли следующим образом:

userManager.RemoveFromRole("userId", "roleName");

И это работает почти так, как я хотел бы. Но если я удаляю пользователя, который в данный момент вошел в мое приложение, он все равно сможет "авторизоваться" на всех моих вызовах WebApi, пока он не выйдет из системы. Что я делаю неправильно?

Редактировать:

Или как я могу выйти из данного пользователя из кода?

1 ответ

Две вещи:

  • Убедитесь, что после изменения пользователей / ролей вы вызываете _context.SaveChanges()
  • Чтобы требовать повторной проверки активного сеанса пользователя, используйте функцию SecurityStamp в ASP.NET. Что такое интерфейс IUserSecurityStampStore в ASP.NET Identity?

Если вы используете утверждения OAuth, это хороший пример того, как сделать недействительными сессии: https://timmlotter.com/blog/asp-net-identity-invalidate-all-sessions-on-securitystamp-update/

Надеюсь это поможет!

Другие вопросы по тегам