почему authenticateRequest срабатывает на странице, когда пользователь вышел из системы? - PullRequest
0 голосов
/ 12 мая 2009

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

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

Итак, я решил, что мог бы изначально создать cookie во время Application_AuthenticateRequest в global.asax, но, похоже, он срабатывает, даже если пользователь еще не вошел в систему.

Это должно быть так?

Ответы [ 2 ]

0 голосов
/ 12 мая 2009

Application_AuthenticateRequest срабатывает при каждом запросе, но если вы используете проверку подлинности с помощью форм и пользователь еще не вошел в систему, вы обнаружите, что свойство User в HttpContext (доступно через this.User в файле глобального класса приложения) оценивается как ноль, в то время как он оценивается как объект IPrincipal, если пользователь вошел в систему.

Так что вы можете сделать что-то вроде этого:

Private Sub Application_AuthenticateRequest(ByVal pObjSender As Object, ByVal pEaDummy As EventArgs)
    If Me.User IsNot Nothing AndAlso Me.User.Identity.IsAuthenticated Then
        If Me.Request.Cookies("authCookieName") Is Nothing Then
            ' Create cookie
        Else
            ' Update cookie
        End If
    End If
End Sub

где authCookieName - имя файла cookie.

0 голосов
/ 12 мая 2009

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

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

...