C# HttpApplication事件流如何与成员资格和cookie相关?

C# HttpApplication事件流如何与成员资格和cookie相关?,c#,asp.net-mvc-2,cookies,asp.net-membership,C#,Asp.net Mvc 2,Cookies,Asp.net Membership,为了更好地理解事件流,我在我的Global.asax中重写了应用程序_AuthenticateRequest()。我正在使用默认MVC2应用程序附带的成员资格提供程序 我想如果我这样做: public void Application_AuthenticateRequest(object sender, EventArgs args) { HttpCookie authCookie = Request.Cookies[FormsAuthentication.For

为了更好地理解事件流,我在我的Global.asax中重写了应用程序_AuthenticateRequest()。我正在使用默认MVC2应用程序附带的成员资格提供程序

我想如果我这样做:

    public void Application_AuthenticateRequest(object sender, EventArgs args)
    {
        HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName];
        if (authCookie != null)
        {
            authCookie.Expires = System.DateTime.Now.AddDays(-1);  // Set the cookie expires time in order to delete it
            Response.Cookies.Add(authCookie);
        }
    }
用户可以登录,但在他们提交登录表单后加载页面时,他们会显示为未登录,因为我销毁了他们的身份验证cookie

但事实并非如此。相反,他们可以成功登录,并在页面加载时显示他们已登录。他们点击的下一个页面将把他们注销

我认为我没有及时销毁他们的cookie,所以我将代码放入了Global.asax中的应用程序_BeginRequest()。它产生了同样的结果


这是否意味着我仍然没有及时销毁他们的cookie,或者我没有正确理解事件的流程?

使用
FormsAuthentication.SignOut()
;这是注销经过身份验证的用户的首选方式。

这里使用了两个cookie集合;请求、Cookies和响应、Cookies

Cookie是来自当前页面浏览器的Cookie。从该集合读取的大多数/所有进程

Cookie是要发送回浏览器的Cookie。当您在响应cookie上设置Expires值时,它首先必须返回浏览器,浏览器会看到它已过期,然后在下一页上将没有cookie


您可以尝试设置Request.Cookies,但我认为它是只读的。

我需要注销不是当前用户的用户,忘了提及这一点。这是为了禁止,这是有道理的。显然,我认为在发送回响应时,他们的cookie将被删除,这将神奇地追溯到发送回的响应。哈哈。我可以接受1个离开页面的点击来注销它们。也就是说,应用程序_AuthenticateRequest()是否是这样的逻辑的好位置?