Аутентификация формы Метод IsOnline не получает правильный статус - PullRequest
0 голосов
/ 21 сентября 2010

Я использую Аутентификацию по форме в проекте ASP.NET MVC.

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

System.Web.Security.FormsAuthentication.SignOut();
Session.Abandon();

Второй вызов не нужен должным образом, потому что я вообще не использую сеанс.

Проблема в том, что, если я войду в систему с учетной записью администратора, я смогу увидеть, что пользователь все еще вошел в систему.

Где я делаю неправильно?

спасибо за помощь!

РЕДАКТИРОВАТЬ :

Добавлен код входа в систему только для завершения

if (ModelState.IsValid) {
    if (MembershipService.ValidateUser(model.UserName, model.Password)) {
        System.Web.Security.FormsAuthentication.SignIn(model.UserName, model.RememberMe);
        if (!String.IsNullOrEmpty(returnUrl)) {
            return Redirect(returnUrl);
        }
        else {
            return RedirectToAction("Index", "Home");
        }
    }
    else {
        ModelState.AddModelError("", "Error....");
    }
}

1 Ответ

0 голосов
/ 22 сентября 2010

Хорошо.Я нашел проблему.

Я использовал, чтобы показать текущим пользователям входа в систему следующий вызов

MembershipUser user = Membership.GetUser (userKey, true) if (user.IsOnline) {...}

и я понял, что второй параметр метода GetUser устанавливает статус пользователя в оперативный режим и обновляет поле LastActivity в хранилище данных.Я не знаю, почему это так работает, но это все ...

...