asp.net mvc закрыть предыдущую сессию для того же пользователя - PullRequest
0 голосов
/ 01 декабря 2010

Привет, мне нужно закрыть предыдущую сессию для того же пользователя. Если пользователь входит на компьютер A, а затем на B, я должен закрыть сеанс для A. У меня даже нет идей сделать это :( Большое спасибо.

1 Ответ

1 голос
/ 01 декабря 2010

Начните новый сеанс

Session.Abandon();

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

Редактировать

Если вам нужен доступ к другим сеансам того же пользователя, вам придется прибегнуть к другим режимам состояния сеанса, кроме InProc.В вашем случае режим состояния БД сработает.Проверьте этот ресурс MSDN об этом.

Вам нужно будет создать отдельную таблицу, например:

create table UserSession
(
    UserID int not null
        references dbo.User(UserID),
    SessionID varchar(100) not null,
    primary key (UserID, SessionID)
)
go

Когда пользователь войдет в систему, вам потребуется:

  1. Обновить вкладку UserSession и удалить существующие сеансы пользователя.
  2. Добавить текущий сеанс.

Когда пользователь выходит из системы, вы просто удаляете запись из таблицы UserSession.

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

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

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