文章目录
一、cookie
1.cookie过程的形象展示
2.cookie的由来
由于http请求是无状态的,无法记录身份,所以需要一种机制能够长期的记录身份,最早出现的就是cookie。
3.cookie的概念
cookie:是由服务器下发给用户的,保存在用户的浏览器上面,用于校验身份的数据,cookie工作机制就跟上面的通关文牒。
- 用户第一次请求服务器
- 服务器验证用户的用户名,密码,下发cookie
- 用户第二次携带cookie请求服务器
- 服务器根据用户携带的cookie确认用户的身份
4.cookie的优缺点
优点:
- 根本上解决了用户持续访问的问题
缺点:
- 由于cookie是保存在用户本地,所以导致一些安全问题,cookie可以被修改,还可以被模仿。
5.根据登录流程认识cookie
- 用户提供用户名,密码进行登录
- 服务器接收用户名,密码
- 校验用户名
- 用户存在
- 校验密码
- 密码正确
- 设置cookie,下发cookie
- 登录成功,跳转到首页
- 密码错误
- 返回密码错误
- 密码正确
- 校验密码
- 用户不存在
- 返回用户不存在
- 用户存在
6.cookie的使用
cookie的设置
登录
创建一个login.html
视图:接收数据,处理数据,返回登录结果
首先完成用户登录,跳转到首页
- 视图
- 模板
cookie的设置
cookie的获取
7.cookie设置参数
cookie参数 | 含义 |
---|---|
key | cookie的键 |
value=’’ | cookie的值 |
max_age=None | cookie存在的时间,有效时间 |
expires=None | cookie的超时时间,跟max_age 冲突,两者二选一 |
path=’/’ | cookie起作用的范围,默认是当前网站 |
domain=None | cookie起作用的域名 如 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,所以有一串字母