一,cookie和session的理解

cookies 是浏览器为 Web 服务器存储的一小段信息。 每次浏览器从某个服务器请求页面时,它向服务器回送之前收到的cookies。它保存在浏览器下的某个文件夹下。保存在浏览器端的键值对可以利用做登录

浏览器下的cookei:

pyhton框架Django之cookie和session

Session  

  Django的Session机制会向请求的浏览器发送cookie字符串。同时也会保存到本地一份,用来验证浏览器登录是否为同一用户。它存在于服务器,Django默认会把session存入到数据库中。

  Session依赖于Cookie,如果浏览器不能保存cooki那么session就失效了。因为它需要浏览器的cooki值去session里做对比。session就是用来在服务器端保存用户的会话状态。

区别:

1、cookie数据存放在客户的浏览器上,session数据放在服务器上。

2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
考虑到安全应当使用session。

3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用COOKIE。

4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

二,cookei

pyhton框架Django之cookie和session

  当你浏览京东或者天猫的时候,登录成功以后(一次请求),想查看我的订单(另一次请求),但是http是短连接(连接一次就断开),服务器该如何判断你是否登录呢?所以在服务器端需要有一个保存用户状态地方(session),客户端登录成功后,服务端向客户端浏览器写入一段字符串(标识),客户端每次访问的时候需要带上这个标识,服务端根据这个标识就能获取客户端信息了。客户端保存这个标识就叫做cookie。

构成:

1、自动生成一段字符串

2、将字符串发送到客户端的浏览器(cookie),同时把这段字符串当做key放在session里。(可以理解为session就是一个字典)

3、在用户的session对应的value里设置任意值(字典里面可以继续套字典)

cookie的简单使用

1、获取Cookie

request.COOKIES.get("islogin",None) #如果有就获取,没有就默认为none

2、设置Cookie

  obj = redirect("/index/")
  obj.set_cookie("islogin",True)  #设置cookie值,注意这里的参数,一个是键,一个是值
  obj.set_cookie("haiyan","344",20)  #20代表过期时间
  obj.set_cookie("username", username)

3、删除Cookie

obj.delete_cookie("cookie_key",path="/",domain=name)

 登录认证示例:

需要知道几点

一共有三次请求
  注意:form表单的action走的路径还是/login/
     第一次请求:url:http://127.0.0.1:8080/login get请求
       第一次请求:url:http://127.0.0.1:8080/login post请求 user pasw
       第一次请求:url:http://127.0.0.1:8080/index post请求 携带着cookie的了
       所以在index页面中就会取到cookie,因为这是的index里面已经有cookie了

pyhton框架Django之cookie和session

from app01 import views
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^login/', views.login),
    url(r'^index/', views.index),
]
urls.py

相关文章: