ASP.net Identity 2.0 Выйти из системы другого пользователя
Я использую asp.net MVC и ASP.net Identity 2.0.
На моем веб-сайте администратор имеет возможность забанить пользователя, и мне бы хотелось, чтобы, когда пользователь забанен, он автоматически выходил с сайта.
Я знаю, что могу выйти из текущего пользователя, позвонив
AuthenticationManager.SignOut();
Но можно ли выйти из аккаунта другого пользователя? Или, может быть, короче его сеанс? Или что-нибудь?
Я знаю, что мог бы сделать глобальный фильтр на контроллерах, запрещающий доступ запрещенных пользователей, но этот фильтр будет запускаться для каждого пользователя, поэтому я не совсем удовлетворен этим решением.
2 ответа
Вам нужно настроить недействительность cookie в Auth.Config.cs:
public void ConfigureAuth(IAppBuilder app)
{
// important to register UserManager creation delegate. Won't work without it
app.CreatePerOwinContext(UserManager.Create);
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
Provider = new CookieAuthenticationProvider
{
OnValidateIdentity = SecurityStampValidator
.OnValidateIdentity<UserManager, ApplicationUser, int>(
validateInterval: TimeSpan.FromMinutes(10),
regenerateIdentityCallback: (manager, user) => user.GenerateUserIdentityAsync(manager))
},
// other configurations
});
// other stuff
}
и затем обновите марку безопасности, как Хао Кунг говорит, когда пользователи забанены.
Если вы используете функцию securitystampvalidator, когда пользователь забанен, просто позвоните: UpdateSecurityStamp(userId)
чтобы любые существующие куки для входа в систему были недействительными при следующей проверке.