描述:
我们平时在某个平台登录同一个账号时,会出现“你的账号已经登录”这样的提示(比如说QQ)对于以一个用户来说他们更关注的是他们的账号登录,而作为我们从事开发的来说,我们要思考他是怎样实现的,其实也很简单,就是通过给Session或者Cookie来i进行实现的,不扯了,接下来我们就开始正题。
首先 我们先认识下Cookie和Session:
简单地说Cookie和Session就是储存在用户本地终端上和服务器上的数据。举个例子:当我们买东西时,你从货架上拿了一个商品A放在购物车里,这时你又拿了一个商品B放在购物车里,但是问题来了,怎么证明商品A和商品B都是你的呢,当然作为生活中的你来说肯定是知道的,但是作为计算机来说他就不知道商品B属于谁的。原因就是:我们每次在网站上的操作都是一次请求,而Http是一种无状态的协议,当一次请求结束后,之前你操作的数据就会被销毁,以致于出现上述的你知道商品B对于计算机来说不知道属于谁了。
那么我们怎样来证明你的东西就是你的呢?这时候就需要Cookie和Session来帮忙了。
概念:
Cookie:是服务器创建并在在本地机(客户端)上存储的小段文本并随每一个请求发送至同一服务器,是在客户端保持当前用户状态的方案。
概念详解链接:https://baike.baidu.com/item/cookie/1119?fr=aladdin
Session:与Cookie恰恰相反,它是在服务端保持当前用户状态的方案。
概念详解链接:https://baike.baidu.com/item/session/479100?fr=aladdin
区别:
cookie 和session 的基本区别:
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用COOKIE。
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
注意:
Session生成后,只要用户继续访问,服务器就会更新Session的最后访问时间,并维护该Session。用户每访问服务器一次,无论是否读写Session,服务器都认为该用户的Session"活跃(active)"了一次。
使用方法:
(在这里我只粘贴Session的简单实用,关于Cookie大家可以参考这个链接:https://www.cnblogs.com/duanxz/archive/2012/07/30/2614857.html
protected void Page_Load(object sender, EventArgs e)
{
if (Request.HttpMethod.ToUpper() == "POST")
{
string name = Request["uName"];//登录名
string pwd = Request["uPwd"];//登录密码
if (Session["name"] ==null)
{
if (name == "1" && pwd == "123")
{
Response.Write("登录成功");
Session["name"] = name;
Session.Timeout = 1;//设置Session的存在时间,单位为分钟,一分钟失效
}
else
{
Response.Write("登录失败");
Session["name"] = null;
}
}
else
{
string id = Session.SessionID;//得到SessionID
Response.Write("您的账号已经登陆"+id);
}
}
}
关于Seesion用法还有好多,我只简单的写了一点(有点懒),其余的大家可以点击链接进行查阅,里面有具体的使用方法:https://baike.baidu.com/item/session/479100?fr=aladdin#3