cookie的介绍(创建,使用及删除,装饰器封装重复代码)session的介绍(与cookie的区别,创建,获取,删除(删除时遇到的情况))

一、cookie


1.cookie过程的形象展示


在这里插入图片描述


2.cookie的由来


由于http请求是无状态的,无法记录身份,所以需要一种机制能够长期的记录身份,最早出现的就是cookie。


3.cookie的概念


cookie:是由服务器下发给用户的,保存在用户的浏览器上面,用于校验身份的数据,cookie工作机制就跟上面的通关文牒。

  1. 用户第一次请求服务器
    1. 服务器验证用户的用户名,密码,下发cookie
  2. 用户第二次携带cookie请求服务器
    1. 服务器根据用户携带的cookie确认用户的身份

4.cookie的优缺点


优点:

  • 根本上解决了用户持续访问的问题

缺点:

  • 由于cookie是保存在用户本地,所以导致一些安全问题,cookie可以被修改,还可以被模仿。

5.根据登录流程认识cookie


  1. 用户提供用户名,密码进行登录
  2. 服务器接收用户名,密码
  3. 校验用户名
    1. 用户存在
      1. 校验密码
        1. 密码正确
          1. 设置cookie,下发cookie
          2. 登录成功,跳转到首页
        2. 密码错误
          1. 返回密码错误
    2. 用户不存在
      1. 返回用户不存在

6.cookie的使用


cookie的设置

登录

创建一个login.html

视图:接收数据,处理数据,返回登录结果

首先完成用户登录,跳转到首页

  • 视图
    在这里插入图片描述
  • 模板
    在这里插入图片描述
    cookie的设置
    在这里插入图片描述
    cookie的获取
    在这里插入图片描述

7.cookie设置参数


cookie参数含义
keycookie的键
value=’’cookie的值
max_age=Nonecookie存在的时间,有效时间
expires=Nonecookie的超时时间,跟max_age 冲突,两者二选一
path=’/’cookie起作用的范围,默认是当前网站
domain=Nonecookie起作用的域名 如 baidu.com
secure=False如果为True使用https传递cookie,默认使用flase
httponly=False如果为True只通过http传递cookie
samesite=None相同的网站(域名) 使用cookie

8.使用cookie,用装饰器使重复代码封装


首页在用户登录的情况下能够显示,如果用户没有登录,跳转到login页
在这里插入图片描述
登录装饰器
在这里插入图片描述
在这里插入图片描述


9.删除cookie


登出

在退出登录的时候,删除用户cookie
在这里插入图片描述
删除多个cookie
在这里插入图片描述


二、session的定义及与cookie的区别


1.session的定义


session就是为了解决cookie不安全的问题而提出的一种会话机制

session本身就是一种会话:指一次通信从开始到结束,只有在web开发当中,session才会以会话的机制出现。

web的session是将用户的信息存在服务器上面的一种web身份校验技术。session需要结合cookie使用,需要通过cookie给用户下发一个id(session_id),然后将用户的具体的信息,保存在服务器上面,通常是在数据库当中


2.cookie和session的区别


  • cookie放在本地,session放在服务器上面,通常是数据库当中
  • 校验cookie速度快,但是安全性不高
  • 校验session速度慢,但是安全性相对好

三、session的操作


1.session的创建


在这里插入图片描述
session对象在django当中以一个类字典对象出现,我们可以使用字段的方法对其进行操作


2.session的获取


在这里插入图片描述


3.session的删除


## 登出
def logout(request):
    response = HttpResponseRedirect("/index/")
    response.delete_cookie("username")
    ## 删除session   目的是 用户再次使用相同的sessionid 进行访问,拿到的session的值是不一样的
    # del request.session["username"]   ### 删除指定session  删除的是保存在服务器上面session的值
    request.session.flush()  ## 删除所有的session

    return response


4.session删除中出现的情况


执行删除session的时候,不像删除cookie,删除cookie可以在网页上看到清除数据

登录前
在这里插入图片描述
在这里插入图片描述
登陆后
在这里插入图片描述
登出后删除cokie
在这里插入图片描述
在这里插入图片描述
而网页上记录的session是固定的sessionid,sessionid中的内容不像cookie一样是对应cookie键的值,而是我们本身设置的session的键的名字,不过显示给我们的是加密后的结果;所以我们每次删除后看到的内容都是一样的

登录前
在这里插入图片描述
登陆后
在这里插入图片描述
登出后
在这里插入图片描述
要查看是否删除得在数据库中去查看;我们使用的数据库是sqlite3,记录session的表如下:
在这里插入图片描述
一开始代表空
在这里插入图片描述
创建cookie后值改变
在这里插入图片描述
删除后又变为空;因为那是加密后的数据,代表null,所以有一串字母
在这里插入图片描述


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值