программно выйти из системы "конкретного" пользователя - PullRequest
8 голосов
/ 14 июня 2010

Возможно ли в Asp.NET MVC профессионально выйти из системы?Я знаю, что вы можете использовать:

FormsService.SignOut();

Но это относится к контексту веб-страницы, выполняющей запрос.Я пытаюсь предотвратить вход пользователя дважды.Поэтому, если я позвоню:

MembershipUser membershipUser = Membership.GetUser(userName);
if (membershipUser.IsOnline == true)
{
    //  log this user out so we can log them in again
    FormsService.SignOut();    
}

Вызов FormsService.SignOut(); не имеет отношения к контексту, скажем пользователя, с другим веб-браузером, который уже вошел в систему?

Ответы [ 2 ]

2 голосов
/ 20 декабря 2011

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

if (User.Identity.IsAuthenticated && UserNeedsToSignOut())
{
    FormsAuthentication.SignOut(); // kill the authentication cookie:
    Response.Redirect("~/default.aspx"); // make sure you redirect in order for the cookie to not be sent on subsequent request
}

Вы можете быть обеспокоены тем, что этот метод будет слишком медленным,

«Почему я должен вызывать эту проклятую функцию при каждой загрузке страницы? Возможно, она каждый раз попадает в базу данных!»

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

1 голос
/ 14 июня 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...