实现用户唯一登录的Session与Cookie区别详解及其使用

描述:


我们平时在某个平台登录同一个账号时,会出现“你的账号已经登录”这样的提示(比如说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

猜你喜欢

转载自blog.csdn.net/GreyCastle/article/details/83549977
今日推荐