Как выйти из системы другого пользователя в ASP.NET Core Identity

Как я могу выйти из системы другого пользователя (не текущего) в ASP.NET Core Identity.

Я знаю, что есть

person Mariusz Jamro    schedule 13.01.2017    source источник
comment
Вы пытались аннулировать штамп безопасности целевого пользователя. Это должно сделать его / ее сеанс недействительным для следующего http-запроса.   -  person Matteo Marciano - MSCP    schedule 13.01.2017
comment
Имеет ли значение стоимость штампа безопасности? Или просто он должен отличаться от предыдущего штампа безопасности?   -  person Mariusz Jamro    schedule 13.01.2017


Ответы (2)


Сначала обновите штамп безопасности этого пользователя:

await userManager.UpdateSecurityStampAsync(user)

Тогда этот пользователь не заметит изменений до появления SecurityStampValidationInterval. Поэтому установите значение Zero для немедленного выхода из системы:

services.AddIdentity<User, Role>(identityOptions =>
{
   // enables immediate logout, after updating the user's stat.
   identityOptions.SecurityStampValidationInterval = TimeSpan.Zero;
}

Обновление: для ASP.NET Core Identity 2.x, 3.x, 5.x

services.Configure<SecurityStampValidatorOptions>(options =>
{
    // enables immediate logout, after updating the user's stat.
    options.ValidationInterval = TimeSpan.Zero;   
});
person VahidN    schedule 22.02.2017
comment
Применимо ли это решение к asp.net identity 2.0 и выше? - person vivek; 13.02.2018
comment
Обновлен ответ для ASP.NET Core Identity 2.x. - person VahidN; 13.02.2018
comment
Этот severely impact просто one запрос к БД. Если эта БД не может с этим справиться, измените ее! - person VahidN; 13.02.2018
comment
Чтобы быть правильным, его больше, чем one запрос - подсчет 5 дополнительных запросов в ASP.NET Core 2.X (AspNetUser, AspNetUserClaims, AspNetUserRoles, AspNetRoles, AspNetRoleClaims) - person Ole K; 22.02.2018
comment
AFAIK это приведет к запросам БД для пользовательских изменений для каждого запроса каждого пользователя, и это повлияет на все запросы к вашему веб-приложению. - person Dmitry; 27.06.2018
comment
Предположим, вы отключили пользователя. (s) он должен быть немедленно отключен, в противном случае дождитесь дальнейших повреждений от этого пользователя ... - person VahidN; 28.06.2018

Я думаю, вы можете найти некоторые функции отзыва, которые заставляют пользователя принудительно выходить из системы. В настоящее время это нелегко реализовать в виде соединения без сохранения состояния и аутентификации на основе токенов (или, можно сказать, на основе утверждений).

Отмененный пользователь должен получить доступ к конечной точке проверки токена, чтобы проверить, действителен ли токен. До тех пор (1) пользователь может отображаться как вошедший в систему или (2) нам нужно реализовать клиент (приложение или веб) для доступа к конечной точке токена очень часто до истечения срока действия токена или отзыв.

Вход / выход привязан к области идентификации пользователя с авторизацией по токену, поэтому жизнеспособным решением является аннулирование токена.

person Youngjae    schedule 13.01.2017
comment
Под токеном вы подразумеваете штамп безопасности? Что-то вроде: IUserSecurityStampStore.SetSecurityStampAsync(newValue)? - person Mariusz Jamro; 13.01.2017
comment
да. ознакомьтесь, пожалуйста, с двумя полезными сообщениями; stackoverflow.com/a/19505060/361100 stackoverflow.com/q/24570872/361100 - person Youngjae; 13.01.2017