需要为cookie设置HTTP Only Flag

时间:2018-04-23 14:26:29

标签: c# asp.net session session-cookies httpcookie

我知道这个解决方案有无数的主题,但我已经设置了代码,只需对此进行修改,因此非常感谢任何帮助。
设置web.config不能解决问题...

 <httpCookies httpOnlyCookies="true" lockItem="true" />

并且现在设置ssl不是一个选项,因此剩下的唯一方法是修改现有代码。
我的代码页面加载是这个

protected void Page_Load(object sender, EventArgs e)
    {
    if (Session["New"] != null && Session["AuthToken"] != null && Request.Cookies["AuthToken"] != null)
       {
    if (!Session["AuthToken"].ToString().Equals(Request.Cookies["AuthToken"].Value))
       { Response.Redirect("Login.aspx");}
        }
        else
        {Response.Redirect("Login.aspx");}
        }

我遇到了这个示例代码来解决这个问题,它说它应该在Page_Load事件下进行,但我无法弄清楚如何去做。
资料来源:https://msdn.microsoft.com/en-us/library/system.web.httpcookie.httponly.aspx

HttpCookie myHttpCookie = new HttpCookie("LastVisit", DateTime.Now.ToString());
myHttpCookie.Name = "MyHttpCookie";
Response.AppendCookie(myHttpCookie);
Response.Write(myHttpCookie.Name);
HttpCookie myHttpOnlyCookie = new HttpCookie("LastVisit",DateTime.Now.ToString());
myHttpOnlyCookie.HttpOnly = true;
myHttpOnlyCookie.Name = "MyHttpOnlyCookie";
Response.AppendCookie(myHttpOnlyCookie);
Response.Write(myHttpOnlyCookie.Name);

我的注销点击事件代码是这个

 if (Request.Cookies["ASP.NET_SessionId"] != null)
        {
            Response.Cookies["ASP.NET_SessionId"].Value = string.Empty;
            Response.Cookies["ASP.NET_SessionId"].Expires = DateTime.Now.AddMonths(20);
        }
        if (Request.Cookies["AuthToken"] != null)
        {
            Response.Cookies["AuthToken"].Value = string.Empty;
            Response.Cookies["AuthToken"].Expires = DateTime.Now.AddMonths(-20);
        }
        Response.Redirect("Login.aspx");

0 个答案:

没有答案