赞
踩
由于http请求是无状态的,无法记录用户的身份,所以需要有一种机制来长期的保存和校验用户的身份,最先出现的是cookie。
Cookie:是由服务器下发到用户(浏览器)本地的用于校验身份的数据。
cookie工作的机制:
由于cookie是由服务器下发到用户本地的,所以导致了一些安全性问题:
Session就是为了解决cookie的安全性问题提出的一种新的回话控制技术。
Session需要结合cookie进行使用。
Session存放在服务器的数据库当中
使用session之后,不会再次直接向服务器下发cookie身份信息,下发的是一个随机不重复的session_id,用户携带session_id访问服务器,服务器通过session_id判断身份,下发cookie。再次校验
校验:
cookie和session的比对:
1、设置cookie
定义视图函数
def setCookie(request):
#定义一个服务器响应对象,基于这个对象设置cookie
response = render(request,"Set_Cookie.html")
response.set_cookie("username","zss")
#cookie可以设置多个
response.set_cookie("password","123")
return response
定义页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<a href="/index/">点我呀</a>
</body>
</html>
路由
查看cookie的下发
请求携带cookie,点击a标签
设置cookie的参数
参数 | 说明 |
---|---|
Key | cookie的键 |
value | cookie的值 |
max_age | cookie存在的有效时间,寿命 |
expires | cookie超时时间,时间点和max_age冲突 |
path=’/’, | cookie起作用的范围,默认是当前网站 |
domain | cookie起作用的域名,www.baidu.com |
secure | 如果为True使用https传输cookie,默认false |
httponly | 只通过http协议传输cookie |
samesite | 相同网站(域名)使用cookie |
2、获取(校验)cookie
定义视图函数
定义页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<a href="#">跳转</a>
</body>
</html>
路由:
测试:访问index页面,第一次应该是不能直接访问,会重定向到sc页面(cookie设置页面),第二次才能访问
由于第一次访问没有cookie自动重定向到sc
第二次访问index
3、删除cookie
定义视图函数
删除cookie后重定向到一个自定义响应的页面
def page404(request):
return HttpResponse('页面去神游太空去了,稍后再试')
def delCooike(request):
response = HttpResponseRedirect('/p4/')
response.delete_cookie('username')
return response
路由:
定义页面
index中添加一个指向删除视图函数的a标签
测试:
点击删除cookie
删除cookie后跳转到自定义提示页面
此时再次访问index,发现又自定跳转到sc页面了
1、添加session
session保存在服务器上,django提供了类字典对象对session进行操作
一般session和cookie一起使用
def setCookie(request):
#定义一个服务器响应对象,基于这个对象设置cookie
response = render(request,"Set_Cookie.html")
response.set_cookie("username","zss")
#cookie可以设置多个
response.set_cookie("password","123")
# 添加session
request.session['username'] = 'zs'
return response
此时访问sc页面,出现了 session id
服务器数据库中查看
2、获取session
3、删除session
def delCooike(request):
response = HttpResponseRedirect('/p4/')
response.delete_cookie('username')
request.session.get('username')
return response
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。