加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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,但我认为它是只读的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读