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/
Надеюсь это поможет!