ASP.Net Forms Authentication Выход пользователей из системы через 10 минут - PullRequest
6 голосов
/ 12 января 2009

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

Я использую ASP.Net 2.0 на IIS 6.0 на Server 2003 R2 Standard Edition, работающем как виртуальный сервер со всеми применимыми обновлениями и .Net 3.5 SP1.

Клиент Internet Explorer 7.0

Ниже приведены настройки web.config:

<!-- Authentication Mode -->
<authentication mode="Forms">
  <forms name=".RecipeViewer" timeout="240" />
</authentication>

Ниже приведен код, используемый для установки файла авторизации:

Private Sub SetCookie(userName)
                ' Use security system to set the UserID within a client-side Cookie
                Dim ticket As New FormsAuthenticationTicket(1,userName, DateTime.Now, DateTime.Now.Add(Me.GetFormsAuthSettings.Forms.Timeout), True, String.Empty, FormsAuthentication.FormsCookiePath)
                Dim hash As String = FormsAuthentication.Encrypt(ticket)
                Dim cookie As New HttpCookie(FormsAuthentication.FormsCookieName, hash)

                cookie.HttpOnly = True

                If (ticket.IsPersistent) Then
                    cookie.Expires = ticket.Expiration
                End If

                Response.Cookies.Add(cookie)

                ' Redirect browser back to originating page
                Response.Redirect(Request.ApplicationPath)
End Sub

    Private Function GetFormsAuthSettings() As System.Web.Configuration.AuthenticationSection
        Return DirectCast(System.Configuration.ConfigurationManager.GetSection("system.web/authentication"), System.Web.Configuration.AuthenticationSection)
    End Function

Ранее я использовал FormsAuthentication.SetAuthCookie, а также даже пытался использовать методы FormsAuthentication.RedirectFromLoginPage, но оба они имели один и тот же результат, поэтому я в итоге выполнил реализацию жесткого cookie, которая выполняется внутри (через просмотр в Reflector) ) что делает класс FormsAuthentication.


Проблема в том, что НЕ воспроизводится в среде размещения Visual Studio 2008 asp.net или в IIS 7.0.


РЕДАКТИРОВАТЬ : файлы cookie включены, даже размещенный сайт был добавлен в качестве надежного сайта.


РЕДАКТИРОВАТЬ : Google Chrome и Firefox не имеют этой проблемы.


РЕДАКТИРОВАТЬ : срок действия проверенных файлов cookie на целевом компьютере истекает через 4 часа в соответствии с настройкой (время ожидания = 240 минут).


РЕДАКТИРОВАТЬ : Как говорит Хаус, все лгут. Пользователь на самом деле не тестировал новую кодовую базу и исходил из предвзятого мнения, что программное обеспечение все еще не работает. Спасибо всем, кто ответил в этой теме.

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

Ответы [ 7 ]

6 голосов
/ 12 января 2009

Также возможно (было), что машинный ключ не был установлен и, таким образом, генерировался случайным образом при каждой инициализации приложения (что означало бы, что зашифрованный билет аутентификации будет добавлен с новым ключом).

Я использую сайт для создания нового машинного ключа для своих приложений и вставляю его в web.config:

http://www.orcsweb.com/articles/aspnetmachinekey.aspx

<?xml version="1.0"?>

<configuration>

    <appSettings/>
    <connectionStrings/>
    <system.web>

        <machineKey validationKey='FED01BCB246D3477F5854D60388A701508AD1DF9099BD3CAC3CA4DAF55F7524B8DD3FA03133BBCA381BC1CD639730445968DFA633A97911187EF187456D692F4' decryptionKey='861E7DF7C2D04297EEFAD47FF3B95F54E87CF28D6C2753D8' validation='SHA1'/>

    </system.web>
</configuration>
1 голос
/ 12 января 2009

Необработанные исключения могут быть причиной перезапуска процесса. Это может добавить к странному поведению. Есть ли что-нибудь в журналах событий?

1 голос
/ 12 января 2009

Хотя ваше требование относится к IE, вы можете использовать Firefox с Firebug и FireCookie для отслеживания ваших файлов cookie и истечения срока их действия.

В IE вы можете скачать IE Developer Toolbar, в котором вы можете видеть значения ваших куки, используя меню Cache \ View Cookie Information.

Странно, если он работает правильно в Google Chrome, возможно, вы можете захватить запрос с помощью события Application_BeginRequest в global.asax и записать полученные куки и их значения.

0 голосов
/ 11 сентября 2012

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

Типы сессий: http://msdn.microsoft.com/en-us/library/ms178586(v=vs.100).aspx

0 голосов
/ 12 января 2009

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

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


Пометка ответа через 48 часов.

0 голосов
/ 12 января 2009

В прошлом у меня была похожая проблема, но я не уверен, что это то, о чем вы говорите. Я прав, что ваша проблема не возникает в производственных системах (или в любой системе с частой загрузкой)? Если это так, проблема может быть в тайм-ауте рабочего потока. Вы можете попробовать изменить или отключить его в IIS Manager-> щелкните правой кнопкой мыши Пулы приложений, перейдите на вкладку «Быстродействие», это флажок в поле «Время простоя». Материал на вкладке «Переработка» этого диалога также может быть вам интересен.

0 голосов
/ 12 января 2009

Я смутно припоминаю, что настройки времени ожидания сеанса IIS могут переопределять все, что вы установили в файле web.config. Убедитесь, что в свойствах вашего приложения не установлено время ожидания 10 минут (свойства-> конфигурация-> параметры).

...