我的目标是在用户进行身份验证时编写cookie。我们正在使用一个隐藏其源代码和事件模型的糟糕框架,因此当我使用他们的登录控件时,我无法在其上设置会话超时!
无论如何,我试图在用户登录时编写cookie,然后在后续页面视图(滑动到期)上刷新cookie过期时间。
所以我想我最初可以在global.asax的Application_AuthenticateRequest期间创建cookie,但即使用户尚未登录,这似乎也会被触发。
这是假设的情况吗?
答案 0 :(得分:0)
是。每当请求到达网站时,都会发生Application_AuthenticateRequest。如果要对页面进行授权,AuthenticateRequest以及进行身份验证也将检查并返回。某些页面需要从身份验证和授权检查中排除,例如登录页面。
对于您的情况,您还应该检查页面并排除登录序列中涉及的那些。
答案 1 :(得分:0)
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名称。