Сессия не была оставлена ​​- Использование управления меню? - PullRequest
0 голосов
/ 20 апреля 2011

У меня есть элемент управления Menu, к которому я добавил пункт меню Logout. Код выглядит так:

Protected Sub Menu1_MenuItemClick(sender As Object, e As System.Web.UI.WebControls.MenuEventArgs) Handles Menu1.MenuItemClick
    If e.Item.Value = "Logout" Then
        Session.Abandon()
        FormsAuthentication.SignOut()
        Response.Redirect("login.aspx")
    End If
End Sub

Когда я выхожу, он перенаправляет нормально, но, похоже, не покидает сеанс. Я успешно реализовал выход из системы в другом приложении с помощью LinkButton. Похоже, это проблема конкретно с элементом управления Menu?

Ответы [ 3 ]

1 голос
/ 21 апреля 2011

Я видел похожую тему о вашей проблеме .. поэтому я думаю, что это может помочь.

Это будет ваш код

Protected Sub Menu1_MenuItemClick(sender As Object, e As System.Web.UI.WebControls.MenuEventArgs) Handles Menu1.MenuItemClick
    If e.Item.Value = "Logout" Then
        Session.Abandon()
        FormsAuthentication.SignOut()
        FormsAuthentication.RedirectToLoginPage("action=logout")
    End If
End Sub

Другое и более чистое решение:

установите для свойства выхода из свойства элемента управления LoginStatus значение RedirectToLoginPage, контроль состояния входа в систему автоматически выведет пользователя из системы, очистив состояние входа и файлы cookie при использовании на клиентском компьютере.

...... Я думаюпервое решение будет лучше для вас, так как вы используете MenuControl и вам нужно что-то с учетом или с учетом затрат. Но вы тот, кто может видеть, как работает все приложение, так что вам решать.

Исходная статья с форумов asp.net: "Session.Abandon / LoginStatus Цикл создания выхода?"

1 голос
/ 21 апреля 2011

Я не уверен, что вы столкнулись с проблемой, связанной с сеансом. Также может быть проблема с аутентификацией. Я ожидаю, что SessionAbondon () будет работать так, как должно. Обратите внимание, что «сессия» и «аутентификация» - это совершенно разные вещи. Они также используют другое печенье.

Чтобы отследить проблему, предлагаю

  • отслеживать (отслеживать) передачу файлов cookie для каждого запроса (наиболее просто с расширением Firebug для Firefox или с помощью функции трассировки ASP.NET)
  • сохранить уникальную идентифицируемую строку в сеансе прямо перед Session.Abandon () и отладить код страницы входа в систему, чтобы увидеть, если она все еще там
  • если ничего не помогло, напишите больше кода здесь
1 голос
/ 20 апреля 2011

Логически это невозможно, но кажется, что после того, как сеанс был прерван и перед переходом на страницу login.aspx, ваш сеанс снова начинается где-то.Специально проверьте загрузку вашей главной страницы.

...