对cookie的深入了解(一)

以前对cookie的了解很浅,只知道是在浏览器里面可以保存用户信息的东西,可以被清除,可以被盗取。

现在简单说下,cookie,目前理解下来只能存string类型的内容,以键值形式保存,一个cookie name下可以有多组键值。

cookie的存入:

if (HttpContext.Current.Request.Cookies[name] == null)
            {
                var cookie = new HttpCookie(name, Common.Encryption2(value));
                //cookie.Expires = DateTime.Now.AddDays(1);
                cookie.Path = "/";
                HttpContext.Current.Response.Cookies.Set(cookie);
            }

先判断是否已存在名称为name的cookie,然后进行保存,设置过期时间和路径。

由于cookie会在每个访问的页面单独生成,故在做全局cookie时需要将其路径设为根目录,使全局能访问。

set为更新cookie,存在则更新,不存在则新建。

Encryption则是为了防止cookie被窃取而进行的编码。

cookie的修改:

public static string UserName
        {
            get
            {
                var lang = string.Empty;
                if (HttpContext.Current.Request.Cookies["xxx_UserName"] !=null)
                    lang = Common.Decryption2(HttpContext.Current.Request.Cookies["xxx_UserName"].Value.ToString());
                return lang;
            }
            set
            {
                var s = string.Empty;
                if (value != null)
                    s = value.ToString();
                HttpContext.Current.Response.Cookies["xxx_UserName"].Value = Common.Encryption2(s);
            }
        }

以get,set方法的形式对username进行修改,读和写。

注意,cookie在获取时为Request,在写入时为Response。

Decryption为解码。

cookie的删除:

之前一直认为用cookie自带的Remove即可,尝试多次后无果。上网查询了一下,发现remove是其继承下来的一个方法,必须要有。。但是不起决定性作用。

尝试设置过期时间,效果也不好,最后在一个不知道什么地方给我找到了有用的方法。

HttpCookie cookies = HttpContext.Current.Request.Cookies[name];
            if (cookies != null)
            {
                cookies.Expires = DateTime.Now.AddDays(-1);
                HttpContext.Current.Response.Cookies.Add(cookies);
                HttpContext.Current.Request.Cookies.Remove(name);
            }

试过可行。

原文地址:https://www.cnblogs.com/riusmary/p/5685324.html