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) чтобы любые существующие куки для входа в систему были недействительными при следующей проверке.

Больше информации о SecurityStamp?

Другие вопросы по тегам