2017-01-13 4 views
3

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

Я знаю, что есть SignOutAsync() метод в SignInManager, но, похоже, нет переопределения, принимающего пользователя в качестве аргумента. Я ищу что-то вроде:

signInManager.SignOutAsync(user); 
+2

Вы пробовали недействительность штампа безопасности целевого пользователя. Это должно привести к недействительности его/ее сессии по следующему следующему запросу http. –

+0

Имеет ли значение штамп безопасности? Или просто он должен отличаться от предыдущей марки безопасности? –

ответ

1

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

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

SignIn/Out сжимается до тождественного авторизованного идентификатора пользователя, так что жизнеспособным решением является аннулирование токена.

+0

Под маркой вы имеете в виду «марку безопасности»? Что-то вроде: 'IUserSecurityStampStore.SetSecurityStampAsync (newValue)'? –

+1

Да. проверьте два полезных сообщения; http://stackoverflow.com/a/19505060/361100 http://stackoverflow.com/q/24570872/361100 – Youngjae

3

Первое обновление безопасности печать этого пользователя:

await userManager.UpdateSecurityStampAsync(user) 

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

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

Update: Для ASP.NET Ядра идентичности 2.x

services.Configure<SecurityStampValidatorOptions>(options => 
{ 
    // enables immediate logout, after updating the user's stat. 
    options.ValidationInterval = TimeSpan.Zero; 
}); 
+0

Применяется ли это решение к идентификатору asp.net 2.0 и выше? – vivek

+0

Обновлен ответ для ASP.NET Core Identity 2.x. – VahidN

+1

Использование значения нуля сильно повлияет на производительность сайта. – Tratcher