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
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
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>
03.CSRF原理
1、当用户第一次发送get请求时,服务端不仅给客户端返回get内容,而且中间包含一个随机字符串
2、这个字符串是加密的,只有服务端自己可以反解
3、当客户端发送POST请求提交数据时,服务端会验证客户端是否携带这个随机字符串, 没有就会引发csrf错误
4、如果没有csrf,那么黑客可以通过任意表单向我们的后台提交数据,不安全