c# – HttpApplication事件流如何与成员资格和cookie相关?
发布时间:2020-12-15 21:14:11 所属栏目:百科 来源:网络整理
导读:我在我的Global.asax中覆盖Application_AuthenticateRequest()以尝试更好地理解事件流.我正在使用默认MVC2应用程序附带的成员资格提供程序. 我想如果我这样做了: public void Application_AuthenticateRequest(object sender,EventArgs args) { HttpCookie
我在我的Global.asax中覆盖Application_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中的Application_BeginRequest()中.它产生了相同的结果. 这是否意味着我仍然没有及时销毁他们的cookie,或者我没有正确理解事件的流程? 解决方法
这里使用了两个cookie集合; Request.Cookies和Response.Cookies
Request.Cookies是来自浏览器的当前页面的cookie.大多数/所有进程都从此集合中读取. Response.Cookies是将要发送回浏览器的cookie.当您在响应cookie上设置Expires值时,它首先必须返回浏览器,浏览器看到它已过期,然后下一页将没有cookie. 您可以尝试设置Request.Cookies,但我认为它是只读的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |