C#中如何保存cookie到本地

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#中如何保存cookie到本地相关的知识,希望对你有一定的参考价值。

我对这个东西的概念不是很清楚 就知道他能保存东西到本地
我要怎么保存呢,就好比说 我在文本框中输入了用户名,和密码
我要怎么保存下来,下次登录又怎么取出cookie中的值呢?
怎么将他保存硬盘,我下一次要用到的时候又如何从硬盘中找到我想要的cookie?
麻烦帮我写一个方法,关键的语句帮我打上注释。
分别是保存cookie值,和取出cookie值

正好手上有保存密码的源码,发给你

//如果用户选择了保存密码,则将用户名和密码保存在cookie中

protected void IsSavePwd(String uName, String uPwd)

    

        if (cb_savePwd.Checked)            // 用户是否选择保存用户

        

            List<String> strs = new List<string>();

            List<String> newStrs = new List<string>();

            strs.Add(uName);

            strs.Add(uPwd);

            newStrs = this.Encrypt(strs);                   //这里对用户名和密码加密      

            HttpCookie cookie = new HttpCookie(newStrs[0], newStrs[1]);     //实例化HttpCookie类并添加值

            cookie.Expires = DateTime.Now.AddDays(7);                             //设置保存时间

            Response.Cookies.Add(cookie); 

        

    

//根据用户名获取cookie中对应的密码

protected String GetPwd(String nName)

        List<String> strs = new List<string>();

        strs.Add(nName);                 //参数为用户名

        List<String> strsPwd = new List<string>();

        strsPwd.Add(Supertea.Rule.Get_Cookie(this.Encrypt(strs)[0]));        //这里解密

        //定义字符串变量来保存cookie文件中用户名对应的密码

        return this.Decrypt(strsPwd)[0];

 

//当用户名的textbox值改变时,

 protected void txt_username_TextChanged(object sender, EventArgs e)

    

        txt_password.Attributes.Add("value", this.GetPwd(txt_username.Text));

    

实现的功能:

根据不同的用户名获取存储在cookies中的密码

追问

你这个txt是在哪里打开的? 我怎么找不到?

追答

XP系统下
C:\Documents and Settings\Administrator\Cookies

追问

if (cb_savePwd.Checked) 这个参数是什么意思,我刚接触这东西,不懂

追答

cb_savePwd是一个复选框
如果用户勾选了保存用户的话
才执行保存用户名密码到cookies的方法
如图,就是那个保存密码前面的复选框

参考技术A 存:

//创建Cookie
HttpCookie Cookies = new HttpCookie("UserInfo");
Cookies.Values["UserName"] = "张三";
Cookies.Values["UserPwd"] = "Zhangsan";
Cookies.Expires = DateTime.Now.AddHours(1);//设置Cookies的有效时间, 这里设置的是一个小时
Response.Cookies.Add(Cookies);//添加到 Cookie 集合
取:
读取Cookie
用户名: Request.Cookies["UserInfo"]["UserName"];
密 码: Request.Cookies["UserInfo"]["UserPwd"];
参考技术B C#中可以用一个方法把CookieContainer所有的Cookie读出来,
此方法的代码如下:
public static List<Cookie> GetAllCookies(CookieContainer cc)

List<Cookie> lstCookies = new List<Cookie>();

Hashtable table = (Hashtable)cc.GetType().InvokeMember("m_domainTable",
System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.GetField |
System.Reflection.BindingFlags.Instance, null, cc, new object[] );

foreach (object pathList in table.Values)

SortedList lstCookieCol = (SortedList)pathList.GetType().InvokeMember("m_list",
System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.GetField
| System.Reflection.BindingFlags.Instance, null, pathList, new object[] );
foreach (CookieCollection colCookies in lstCookieCol.Values)
foreach (Cookie c in colCookies) lstCookies.Add(c);


return lstCookies;

然后,再保存到文件:
StringBuilder sbc = new StringBuilder();
List<Cookie> cooklist = Code.ProgTool.GetAllCookies(CookieContainer);
foreach (Cookie cookie in cooklist)

sbc.AppendFormat("0;1;2;3;4;5\r\n",
cookie.Domain,cookie.Name, cookie.Path, cookie.Port,
cookie.Secure.ToString(), cookie.Value);


FileStream fs = File.Create("d:\\chinarencookies.txt");
fs.Close();
File.WriteAllText("d:\\chinarencookies.txt", sbc.ToString(), System.Text.Encoding.Default);
读出所有Cookie
string[] cookies = File.ReadAllText("d:\\chinarencookies.txt", System.Text.Encoding.Default).Split("\r\n".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
foreach (string c in cookies)

string[] cc = c.Split(";".ToCharArray());
Cookie ck = new Cookie(); ;
ck.Discard =false;
ck.Domain = cc[0];
ck.Expired =true;
ck.HttpOnly = true;
ck.Name = cc[1];
ck.Path = cc[2];
ck.Port = cc[3];
ck.Secure = bool.Parse(cc[4]);
ck.Value = cc[5];
CookieContainer.Add(ck);
参考技术C //创建一个Cookie对象,"ck1"为Cookie的名称
HttpCookie cookie = new HttpCookie("ck1");
//设置要保存到Cookie的值,用户名|密码
cookie.Value = "admin|pwd";
//设置Cookie的生命周期
cookie.Expires = DateTime.Now.AddDays(1);
//写入Cookie到客户端
Response.Cookies.Add(cookie);

//根据Cookie名称取得Cookie的值
String cookieValue = Request.Cookies["ck1"].Value;
//解析Cookie的Value,从而得到用户名和密码
String[] strs = cookieValue.Split('|');
//用户名
String userName = strs[0];
//密码
String password = strs[1];

Laya怎么保存用户信息到本地(相当于cookie)

      laya.net.LocalStorage.setItem("name","guifa");  //存储用户信息到本地上,相当于cookie
      laya.net.LocalStorage.setItem("name","guifa2014");     //修改本地用户信息
      var name =laya.net.LocalStorage.getItem("name");       //获取本地用户信息

不需要new,直接操作localstorage类

以上是关于C#中如何保存cookie到本地的主要内容,如果未能解决你的问题,请参考以下文章

Scrapy框架--cookie的获取/传递/本地保存

在 C# 中为本地记分板保存数组

将 jwt 保存在 cookie 中以将其传递到本地存储是不是安全?

第七节 将cookie保存到本地

Laya怎么保存用户信息到本地(相当于cookie)

如何从本地 SharePoint 2013 和 ADFS 获取 FedAuth Cookie