Подтвердить что ты не робот

Как заставить пользователя выйти из системы, когда его имя пользователя изменилось другим пользователем?

В моем приложении я использую Forms-Authentication для входа и выхода из системы.

Одна функциональность - admin может изменить имя пользователя других пользователей. В этом случае мне нужно вывести пользователя, чье имя пользователя изменилось.

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

Как я могу заставить этих пользователей выйти из системы с помощью формы-аутентификации?

ОБНОВЛЕНИЕ:

    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        string controller = filterContext.RouteData.Values["controller"].ToString();
        string action     = filterContext.RouteData.Values["action"].ToString(); ;
        // Below returns the previous username, which does not exist anymore in db.
        string userName = HttpContext.Current.User.Identity.Name;

        UnitOfWork unitOfWork = new UnitOfWork();

        if (!unitOfWork.UserRepository.UserExists(userName))
        {
            FormsAuthentication.SignOut();
            filterContext.HttpContext.Session.Clear();
            filterContext.HttpContext.Session.Abandon();
            // I am not using Roles.


        }
        unitOfWork.Dispose();
        base.OnActionExecuting(filterContext);

    }

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

Спасибо заранее.

4b9b3361

Ответ 1

Вот что вы делаете, чтобы заставить пользователя выйти из системы:

public void UserPasswordChangedHandler()
{
  FormsAuthentication.SignOut();
  Roles.DeleteCookie();
  Session.Clear();
}

Я не думаю, что требуется объяснение за строкой, достаточно понятно. Пожалуйста, дайте мне знать, если я ошибаюсь.

Обновление

Простой ответ на ваш дополнительный вопрос заключается в том, чтобы следить за логическим отслеживанием каждого пользователя, если его данные были обновлены администратором, и если да - просто перенаправите его на страницу входа.

Пожалуйста, ознакомьтесь со следующими статьями для принудительного выхода из системы с использованием данных проверки подлинности:

Обновление 2

Очистка файлов cookie

Надеюсь, что это поможет вам.

Ответ 2

Когда пользователь должен стать недействительным, вы должны добавить свои данные в какой-то внутренний статический список.

Затем на каждом запросе страницы (возможно, с помощью Application_BeginRequest) посмотрите, находится ли этот текущий пользователь в этом списке, и если это так, вызывается FormsAuthentication.SignOut там и далее.

Кажется, это немного взломан, но это лучшее, что я могу сейчас придумать.

Обратите внимание, что удаление состояния сеанса пользователя в заглавии - это еще одна проблема.