小白理解Session和Cookie区别
导读:最近听室友面试百度,面试官问到了相关知识,所以特别去查了查。
下面呢,首先拿个小例子方便大家理解。
假如,你带你女朋友去买衣服。结账的时候,你问售货员小姐姐能不能便宜一点。于是发生了如下对话:
你:我们上周才来买过衣服,能不能便宜一些?
售货员:不好意思,记不起来您了,不好意思哦。
这时店长走了过来,给了你一张小卡片,盖了一个章。
店长:您好,欢迎来到我们这里购物。这个卡片可以作为来我们这里购物的凭证。来一次,我们将会为您盖一次章,并标注日期,如果不超过最近一次购物记录一个月时间内,可以享受88折优惠。
一段时间过后。。。。。。卡片上盖章盖满了。于是对现有手段进行升级。使用了电子平台,在店里的电脑即可记录顾客相应的购物信息。
总结:
1.这里的小卡片相当于cookie,而店里的电子平台相当于Session。
2.小卡片在顾客手里,Cookie在本地浏览器中,可能出现丢失,冒用等现象,存在一定风险。
3.店里的电子平台存放在店里,Session存放在服务器中,安全性较高。
好了,这里通过一个例子带大家了解相关概念,这里进行更为细致的讲解。
session:
- session的基本概念:session和cookie的作用有点类似,都是为了存储用户相关的信息。不同的是,cookie是存储在本地浏览器,session是一个思路、一个概念、一个服务器存储授权信息的解决方案,不同的服务器,不同的框架,不同的语言有不同的实现。虽然实现不一样,但是他们的目的都是服务器为了方便存储数据的。session的出现,是为了解决cookie存储数据不安全的问题的。
- session与cookie的结合使用:
- session存储在服务器端:服务器端可以采用mysql、redis、memcached等来存储session信息。原理是,客户端发送验证信息过来(比如用户名和密码),服务器验证成功后,把用户的相关信息存储到session中,然后随机生成一个唯一的session_id,再把这个session_id存储cookie中返回给浏览器。浏览器以后再请求我们服务器的时候,就会把这个session_id自动的发送给服务器,服务器再从cookie中提取session_id,然后从服务器的session容器中找到这个用户的相关信息。这样就可以达到安全识别用户的需求了。
- session存储到客户端:原理是,客户端发送验证信息过来(比如用户名和密码)。服务器把相关的验证信息进行一个非常严格和安全的加密方式进行加密,然后再把这个加密后的信息存储到cookie,返回给浏览器。以后浏览器再请求服务器的时候,就会自动的把cookie发送给服务器,服务器拿到cookie后,就从cookie找到加密的那个session信息,然后也可以实现安全识别用户的需求了。
flask操作session:
-
设置session:通过
flask.session
就可以操作session了。操作
session
就跟操作字典是一样的。
session['username']='zhiliao'
。 -
获取session:也是类似字典,
session.get(key)
。 - 删除session中的值:也是类似字典。可以有三种方式删除session中的值。
-
session.pop(key)
。 -
del session[key]
。 -
session.clear()
:删除session中所有的值。
-
设置session的有效期:如果没有设置session的有效期。那么默认就是浏览器关闭后过期。如果设置session.permanent=True,那么就会默认在31天后过期。如果不想在31天后过期,那么可以设置
app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(hour=2)
在两个小时后过期。
版权声明:本文为qq_38963685原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。