Начните новый сеанс
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
Когда пользователь войдет в систему, вам потребуется:
- Обновить вкладку UserSession и удалить существующие сеансы пользователя.
- Добавить текущий сеанс.
Когда пользователь выходит из системы, вы просто удаляете запись из таблицы UserSession
.
Возможно, у вас есть пользовательский IHttpModule
для вашей аутентификации.Этот конкретный модуль должен проверить, существует ли запись для текущего сеанса.Если этого не произойдет, он должен выйти из системы и перенаправить на страницу с сообщением, похожим на . Вы вошли в другое место .
Комментарий к таблице: Каждый пользователь может иметь несколько сеансов в таблице, поскольку он может отключиться или просто закрыть свои браузеры перед выходом из системы.Отсюда первичный ключ в обоих полях.