08.cookie
# 01.cookie
# 1.1 cookie简介
- 1.cookie实质就是客户端硬盘中存放的键值对,利用这个特性可以用来做用户验证
- 2.比如:{“username”: “dachengzi”} #再次访问url就会携带这些信息过来
# 1.2 前端操作cookie
说明: 使用下面方法操cookie必须先引入jquery.cookie.js
- 前端获取cookie值: var v = $.cookie('per_page_count');
- 前端设置cookie值: $.cookie('per_page_count',v);
# 1.3 后端操作cookie
说明: response = HttpResponse(...) 或 response = render(request, ...)
- 后端设置cookie值: response.set_cookie('username',"zhangsan")
- 后端后去cookie值: request.COOKIES.get('username')
# 1.4 设置cookie时常用参数
def cookie(request):
#1 获取cookie中username111得值
request.COOKIES.get('username111')
#2 设置cookie的值,关闭浏览器失效
response.set_cookie('key',"value")
# 设置cookie, N秒只后失效
response.set_cookie('username111',"value",max_age=10)
#3 设置cookie, 截止时间失效(expires后面指定那个时间点失效)
import datetime
current_date = datetime.datetime.utcnow()
exp_date = current_date + datetime.timedelta(seconds=5) #seconds指定再过多少秒过期
response.set_cookie('username111',"value",expires=exp_date)
#4 设置cookie是可以使用关键字salt对cookie加密(加密解密的salt中值必须相同)
obj = HttpResponse('s')
obj.set_signed_cookie('username',"kangbazi",salt="asdfasdf")
request.get_signed_cookie('username',salt="asdfasdf")
#5 设置cookie生效路径
path = '/'
#6 删除cookie中is_login的值
response.delete_cookie('is_login')
return response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 02.使用cookie实现用户登录、注销
# 2.1 views.py
from django.shortcuts import render,HttpResponse,redirect
def index(request):
username = request.COOKIES.get('username') # 获取cookie
if not username:
return redirect('/login/')
return HttpResponse(username)
def login(request):
if request.method == "GET":
return render(request,'login.html')
if request.method == "POST":
u = request.POST.get('username')
p = request.POST.get('pwd')
if u == 'tom' and p == '123':
res = redirect('/index/')
res.set_cookie('username',u,max_age=500) # 设置500s免登陆
return res
else:
return render(request,'login.html')
def logout(req):
response = redirect('/login/')
#清理cookie里保存username
response.delete_cookie('username')
return response
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 2.2 login.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/login/" method="POST">
<input type="text" name="username" placeholder="用户名">
<input type="text" name="pwd" placeholder="密码">
<input type="submit" value="提交">
</form>
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# 03.CSRF原理
- 1、当用户第一次发送get请求时,服务端不仅给客户端返回get内容,而且中间包含一个随机字符串
- 2、这个字符串是加密的,只有服务端自己可以反解
- 3、当客户端发送POST请求提交数据时,服务端会验证客户端是否携带这个随机字符串, 没有就会引发csrf错误
- 4、如果没有csrf,那么黑客可以通过任意表单向我们的后台提交数据,不安全
上次更新: 2024/3/13 15:35:10