2010-07-19 2 views
0

Я использую asp.net 4.0 с asp.net MVC 2.0 и поставщиком членства asp.net.Как уничтожить сеанс другого, чем текущий пользователь в asp.net

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

Я получаю метод Session.Abandon(), но то, что я ищу, одинаково для пользователя, что-то вроде user.AbandonSessions().

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

Благодаря

+0

Я не уверен, что понял вопрос, может быть, перефразировать. вы можете использовать Session.Abandon или даже установить для переменной сеанса значение null, когда вы закончите с ней. – JonH

+0

Ошибка - это просто добавленная «... и не позволяйте двери ударить вас по пути». Нет большого количества ИМО. – Greg

+0

Не могли бы вы прояснить, что вы пытаетесь сделать. Это немного неоднозначно, как есть. –

ответ

1

Я думаю, вы можете наклоняться на ветряные мельницы. С вашей желаемой целью слишком много вещей.

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

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

Удачи.

+0

В конце концов, моя проблема заключается в том, что слишком много частей приложения, которые не проверяются, прежде чем они получат доступ к информации о сеансе. Таким образом, вы правы, проблема заключается не в выдающейся сессии, а в недельной проверке сеанса перед ее доступом. Спасибо – Four

1

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

+0

не упоминается об удалении пользователя. только отбрасывая сеанс. –

+0

На самом деле, код поэта, pre63 конкретно говорит: «... прежде чем я его удалю». Похоже, что он абсолютно связан с любыми ошибками, которые пользователь мог получить после посещения страницы во время проверки подлинности, но после того, как их аккаунт исчез. – Chris

+0

@code poet: Моя интерпретация вопроса: удаление пользователя членства ASP.NET во время входа этого пользователя из другого браузера. – Greg

0

FormsAuthentication.SignOut();

Но вам нужно позвонить ему в контексте пользователя, которого вы хотите вывести.

+0

Извините за ответ на старый вопрос, но как бы назвать эту функцию в контексте другого пользователя? – Tominator

+0

Извините за задержку. Я не думаю, что ты можешь. – Greg

+0

невозможно вызвать SignOut другого пользователя ... что вы можете сделать, это поддерживать список идентификаторов сеансов (как статических переменных) для пользователей и искать в этом списке для каждого запроса .... –

Смежные вопросы