0

我的目标是在用户进行身份验证时编写一个 cookie。我们使用了一个糟糕的框架,它隐藏了它的源代码和事件模型,所以当我使用他们的登录控件时,我无法在它上面设置会话超时!

无论如何,我试图在用户登录时编写一个 cookie,然后在后续页面视图(滑动到期)上刷新 cookie 过期时间。

所以我想我最初可以在 global.asax 中的 Application_AuthenticateRequest 期间创建 cookie,但即使用户尚未登录,它似乎也会触发。

估计是这样吗?

4

2 回答 2

1

Application_AuthenticateRequest 在每个请求上触发,但是如果您使用表单身份验证并且用户尚未登录,您会发现 HttpContext 的 User 属性(通过全局应用程序类文件中的 this.User 访问)评估为 null ,而如果用户登录,它将评估为 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 名称。

于 2009-05-11T21:50:03.223 回答
0

是的。Application_AuthenticateRequest 将在每次请求访问网站时发生。如果要对页面进行授权,AuthenticateRequest 以及进行身份验证也将检查并返回。某些页面需要从身份验证和授权检查中排除,例如登录页面。

对于您的情况,您还应该检查页面并排除登录序列中涉及的页面。

于 2009-05-11T20:49:50.793 回答