Как выход из системы работает в DNN 5.x? - PullRequest
5 голосов
/ 04 июня 2011

Мы видим проблему, из-за которой сеанс не отменяется в DNN. Я не уверен, что это проблема 4.5.x, так как мы обновили некоторое время назад до 5.x и, возможно, ссылаемся на более старый элемент управления.

Элемент управления входом / выходом из системы, на который мы ссылаемся в нашем модуле, - DotNetNuke.UI.Skins.Controls.Login, расположенный по пути DNN_Web_Root / admin / Skins / login.ascx

Там, похоже, он выполняет перенаправление в logoff.aspx, который затем проходит через LogoffHttpHandler, который затем отправляется куда-то для завершения процесса выхода из системы, однако я не могу найти, где этот процесс видит, вызывается ли Session.Abandon.

Может кто-нибудь ответить на следующие вопросы:

  • Есть ли проблема с DNN, когда Session.Abandon не вызывается при выходе из системы?
  • Какой процесс на самом деле обрабатывает процесс LogOff?

Ответы [ 3 ]

2 голосов
/ 06 июня 2011

Выход из системы обычно обрабатывается Desktopmodules \ Admin \ Authentication \ Logoff.ascx. Основным действием является очистка куки-файла аутентификации, а также нескольких других куки-файлов и некоторых пользовательских кэшированных данных.

DotNetNuke НИКОГДА не использует Session для чего-либо и не очищает Session при выходе из системы.

0 голосов
/ 05 января 2016

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

Если вы должны использовать сессию, один из способов - просто проверить

System.Web.HttpContext.Current.User.Identity.IsAuthenticated

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

Как говорится, вызов Session.Abandon () в Logoff, как предложил @ScottS, может быть самым простым способом, хотя эта опция может быть недоступна в размещенной среде.

0 голосов
/ 05 июня 2011

похоже, Дану Роу повезло со следующим кодом:

Response.Redirect(Globals.NavigateURL(TTSRoutines.giPunchinPage, "Logoff"), True)

Ссылка

...