zoukankan      html  css  js  c++  java
  • 对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);
                }

    试过可行。

  • 相关阅读:
    Java——static
    Java——package与import
    Java——方法重写
    Java——super
    Java——类的继承、访问控制
    Java——API文档
    Java——对象转型
    Java——动态绑定和多态
    Java——抽象类
    redis在linux上的安装和配置
  • 原文地址:https://www.cnblogs.com/riusmary/p/5685324.html
Copyright © 2011-2022 走看看