前沿:cookie与session在我们写程序中是必不可少的。尤其在做用户登录以及用户注销的时候,都需要用cookie与session进行完成我们的代码任务。
今天我们主要给大家讲解cookie,session的知识大家可以浏览我的另一篇博客:https://blog.csdn.net/GreyCastle/article/details/83549977这里为大家详解了Cookie的知识点。
切入正题:
一、什么是Cookie:
Cookie英译为小甜饼。但是在我们的代码世界中,它却有了另一种意思:就是小量信息的意思。当我们访问网站登录我们的账号时,服务端会给我们创建对应着我们账号的Cookie并且保存在我们的客户端的一个文件夹下。这个文件夹里Cookie不仅可以存我们的账号密码,也包含着我们的客户端的其他信息。在浏览器运行时,Cookie存储在 RAM 中。一旦你从该网站或网络服务器退出,Cookie 也可存储在计算机的硬驱上。当访客结束其浏览器对话时,即终止的所有 Cookie。当然Cookie也可以被禁用。
扯了这麽多,总之一句话:Cookie就是当访问浏览器时,服务端给我们创建出一个保存访问者信息的并且保存在客户端的文本。
二:Cookie的生存周期:
Cookie可以保持登录信息到用户下次与服务器的会话,换句话说,下次访问同一网站时,用户会发现不必输入用户名和密码就已经登录了(当然,不排除用户手工删除Cookie)。而还有一些Cookie在用户退出会话的时候就被删除了,这样可以有效保护个人隐私。
Cookie在生成时就会被指定一个Expire值,这就是Cookie的生存周期,在这个周期内Cookie有效,超出周期Cookie就会被清除。有些页面将Cookie的生存周期设置为“0”或负值,这样在关闭浏览器时,就马上清除Cookie,不会记录用户信息,更加安全。
三:Cookie作用:
1.在客户端保存用户数据,简化流程(在有效时间内,不必重新登录)
2.筛选和维护用户信息,判断用户在HTTP请求中的状态
3.登录以及注销(程序开发中最常用)
四、Cookie的优缺点:
优点:保存用户数据,减少流程
缺点:用户隐私容易暴露,不安全
五、怎样使用Cookie(重点)--这里就直接给大家用代码进行展示,比较直接
1.首先是创建Cookie以及向Cookie里写入数据,完成用户登录功能(当然方法不止这一种)
/// <summary>
/// 用户登陆
/// </summary>
/// <returns></returns>
public ActionResult LoginPage()
{
string loginReslut = null;
string mess = null;
string account="123456";
int id="11";
StringBuilder sbMess = new StringBuilder();
if (Request.HttpMethod.ToUpper() == "POST")
{
HttpCookie loginUserCookie = Request.Cookies["loginUserInfo"];
if(loginUserCookie==null)//判断用户是否已经登录,Cookie是否存在
{
HttpCookie loginUserCookiesInfo = new HttpCookie("loginUserInfo");//创建cookie对象
loginUserCookiesInfo.Values.Add("loginUserAccount",account );//将账号写入Cookie
loginUserCookiesInfo.Values.Add("loginUserId", id.ToString());//将用户id写入Cookie
loginUserCookiesInfo.Expires = DateTime.Now.AddDays(1);//设置Cookie的有效期
Response.AppendCookie(loginUserCookiesInfo);//写入到客户端
loginReslut = "ok";//用户登录成功,
mess = "用户登录成功";
}
else
{
loginReslut = "fail";//用户已经在别处登录
mess = "用户已经在别处登录";
}
}
sbMess.Append("{" + "\"" + "status" + "\"" + ":" +"\""+loginReslut+"\""+","+"\""+"msg"+"\""+":"+"\""+mess+"\""+"}");
return Content(sbMess.ToString());
}
二:读取Cookie,完成用户注销功能:
/// <summary>
/// 用户注销
/// </summary>
/// <returns></returns>
public ActionResult QuitLoginUser()
{
//拿到刚刚创建的Cookie对象,注意key要和创建时的保持一致
HttpCookie loginUserCookie = Request.Cookies["loginUserInfo"];
if (loginUserCookie != null)//判断用户是不是登录了
{
//string account=loginUserCookie.Values["loginUserAccount"];//获取用户的账号
//string userId=loginUserCookie.Values["loginUserId"];//获取用户的id
//让Cookie过期,就可以让用户注销了
Response.Cookies["loginUserInfo"].Expires = DateTime.Now.AddDays(-1);
//注意:Response.Cookies["loginUserInfo"].Expires里的key要与Request.Cookies["loginUserInfo"]保持一致
msg = "用户已退出";
status = "ok";
}
else
{
msg = "您还没登录";
status = "fail";
}
string jsonData = "{" + "\"" + "status" + "\"" + ":" + "\"" + status + "\"" + "," + "\"" + "msg" + "\"" + ":" + "\"" + msg + "\"" + "}";
return Content(jsonData);
}
我写的这些基本的Cookie只是很基本的用法,当然很多没有给大家介绍完,日后一定给大家补上。
如果大家想了解更多关于Cookie的知识可以访问这个连接:https://baike.baidu.com/item/cookie/1119?fr=aladdin#6
拜拜!,我要睡觉了哦,有问题请评论留言!新手拒喷,哈哈!