Asp.net Core Identity «Заставить пользователя войти в следующий запрос»

Работа над приложением, использующим Identity 3 в ядре asp.net. У меня есть ситуация, когда мы предоставляем пользователю потребности системного администратора через пользовательский интерфейс для управления пользователями, ролями и претензиями.

рабочий процесс;

  1. Роли динамически создаются системным администратором в процессе установки приложения, где утверждения (мы называем их разрешениями в пользовательском интерфейсе) назначаются ролям.
  2. Новые пользователи создаются системным администратором, где пользователю назначается роль.
  3. Претензии регистрируются в политиках в Startup.cs.
  4. Политики разбросаны по всему приложению в представлениях и контроллерах, чтобы ограничивать/предоставлять пользователям доступ на основе утверждений, которые они имеют через роли, которым они назначены.

  5. Администратор может заблокировать пользователя с помощью флажка пользовательского интерфейса, где поле даты блокировки в таблице пользователей установлено далеко в будущем, и сбросить, если они разблокируются, до сегодняшней даты.

Проблема: файл cookie используется для аутентификации пользователя, а утверждения в файле cookie (я думаю...) используются для авторизации доступа пользователя к определенным ресурсам, регулируемым политиками. Сеанс cookie установлен на 30 минут по умолчанию.

Если администратор блокирует пользователя и/или если администратор меняет роль пользователя, что меняет утверждения пользователей (+/-)... изменения не вступают в силу (из UX) до тех пор, пока пользователь либо a. выйти и снова войти или b. срок действия файла cookie в их браузере истекает.

Identity, похоже, не имеет метода _userManager.ForceUserToSignInAgainAsync(), чтобы обновлять переменные cookie. Кто-нибудь нашел решение этой потребности? Похоже на обычный сценарий, который должен быть частью Identity 3.


person JReam    schedule 21.02.2017    source источник
comment
Вы везде ищете выход из системы, если учетные данные пользователя обновлены?   -  person Win    schedule 22.02.2017
comment
Я ищу эффективный способ заставить пользователя (учетные данные которого изменились) снова войти в систему, как только его учетные данные изменились. Пример использования: если пользователь вошел в систему, но администратор «заблокировал его» или добавил или удалил утверждения, изменив роли, следующий запрос от пользователя не проходит проверку подлинности, что вынуждает их перенаправляться на страницу входа, где их файл cookie сбрасывается с использованием последних учетных данных.   -  person JReam    schedule 22.02.2017
comment
Я бы подумал, что в пользовательской таблице должно быть логическое поле, которое можно было бы проверить, чтобы каждый раз, когда запрос пользователя встречает атрибут [Authorize], он проверял, не «заблокированы» ли они. Таким образом, он перенаправит их на страницу входа, чтобы сбросить файл cookie с обновленными учетными данными... но там нет... есть поле "можно заблокировать" и дата "заблокировано до". Но дата «заблокирована до» проверяется только при входе в систему, где файл cookie установлен на x период времени. Куки содержат ключи от королевства, нужно найти способ изменить то, что проверяет печенье.   -  person JReam    schedule 22.02.2017