在ASP.NET中怎样用cookie保存用户名和密码到客户端,下次等自动显示用户名和密码(在MVC的情况下)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在ASP.NET中怎样用cookie保存用户名和密码到客户端,下次等自动显示用户名和密码(在MVC的情况下)相关的知识,希望对你有一定的参考价值。
参考技术A public void SaveUserInfo()Set("用户名","长沙极度信息技术有限公司");
Set("密码","最好加密保存,明文保存不安全");
public string GetUsername()
return Get("用户名");
public string GetPassword()
return Get("密码");
public static object Get(string key)
if (SessionOrCookies.ToLower() == "cookies")
return CookiesManager.Get(key);
HttpContext.Current.Session.Timeout = TimeOut;
return HttpContext.Current.Session[key];
public static void Set(string key, object value)
if (SessionOrCookies.ToLower() == "cookies")
CookiesManager.Set(key, value.ToString());
return;
HttpContext.Current.Session.Timeout = TimeOut;
HttpContext.Current.Session[key] = value;
本回答被提问者采纳
自动登录和解/加密
在asp.net中可以用cookie保存用户的帐户密码实现自动登录的功能,但是需要强调一下,cookie在客户端保存,是不安全的,推荐使用md5加密保存。
下面分析一下在asp.net中cookie的创建、提取与销毁的方法:
创建cookie
//向客户端写入Cookie
HttpCookie hcUserName1 = new HttpCookie("uname"); // 创建一个名为uname的cookie
hcUserName1.Expires = DateTime.Now.AddDays(7); // 设置该cookie的有效时间
hcUserName1.Value = uname; // 给cookie赋值(也就是你想保存的账号,或者密码)
HttpContext.Current.Response.Cookies.Add(hcUserName1); // 提交cookie
提取cookie
if (HttpContext.Current.Request.Cookies["uname"] != null) // 如果这个uname cookie 不为空
string uname = HttpContext.Current.Request.Cookies["uname"].Value.ToString(); // 提取cookie
销毁cookie
// 把cookie的时间设置为 -1 ,即cookie过期、销毁
HttpContext.Current.Response.Cookies["uname"].Expires = DateTime.Now.AddSeconds(-1);
//加密
public static string EncryptPassword(string sPASSWORD, Guid gKEY, Guid gIV)
{
UTF8Encoding utf8 = new UTF8Encoding(false);
string sResult = null;
byte[] byPassword = utf8.GetBytes(sPASSWORD);
using ( MemoryStream stm = new MemoryStream() )
{
Rijndael rij = Rijndael.Create();
rij.Key = gKEY.ToByteArray();
rij.IV = gIV.ToByteArray();
using ( CryptoStream cs = new CryptoStream(stm, rij.CreateEncryptor(), CryptoStreamMode.Write) )
{
cs.Write(byPassword, 0, byPassword.Length);
cs.FlushFinalBlock();
cs.Close();
}
sResult = Convert.ToBase64String(stm.ToArray());
}
return sResult;
}
//解密
public static string DecryptPassword(string sPASSWORD, Guid gKEY, Guid gIV)
{
UTF8Encoding utf8 = new UTF8Encoding(false);
string sResult = null;
byte[] byPassword = Convert.FromBase64String(sPASSWORD); //将指定的字符串(它将二进制数据编码为 Base64 数字)转换为等效的 8 位无符号整数数组。
using (MemoryStream stm = new MemoryStream()) //是内存流,为系统内存提供读写操作,由于MemoryStream是通过无符号字节数组组成的,底层内存的操作
{
Rijndael rij = Rijndael.Create(); //Rijndael算法,一个密钥分组加密的算法
rij.Key = gKEY.ToByteArray(); //转为字节数组
rij.IV = gIV.ToByteArray();
using (CryptoStream cs = new CryptoStream(stm, rij.CreateDecryptor(), CryptoStreamMode.Write)) //解密,参数(对其执行加密转换的流,要对流执行的加密转换,CryptoStreamMode 值之一)
{
cs.Write(byPassword, 0, byPassword.Length);
cs.Flush();
cs.Close();
}
byte[] byResult = stm.ToArray(); //内存流转为数组
sResult = utf8.GetString(byResult, 0, byResult.Length); //用UTF8编码得到字符串
}
return sResult;
}
以上是关于在ASP.NET中怎样用cookie保存用户名和密码到客户端,下次等自动显示用户名和密码(在MVC的情况下)的主要内容,如果未能解决你的问题,请参考以下文章
如何在 cookie 上保留 ASP.NET 身份声明直到注销?