• 对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);
                }

    试过可行。

  • 相关阅读:
    sublime开启vim模式
    git命令行界面
    搬进Github
    【POJ 2886】Who Gets the Most Candies?
    【UVA 1451】Average
    【CodeForces 625A】Guest From the Past
    【ZOJ 3480】Duck Typing
    【POJ 3320】Jessica's Reading Problemc(尺取法)
    【HDU 1445】Ride to School
    【HDU 5578】Friendship of Frog
  • 原文地址:https://www.cnblogs.com/riusmary/p/5685324.html
Copyright © 2020-2023  润新知