Django知识点:会话机制-cookie和session

背景介绍

http请求是一个无状态的,无法记录用户身份的。我们需要一个记录用户身份的机制,最早出现的就是cookie

cookie

什么是cookie

cookie是由服务器下发到用户,保存在用户的浏览器上面的,用来标识或者记录用户身份的机制。也是django的一种会话机制

优点

会话机制,从根本上解决了用户持续访问的问题

缺点

cookie 保存在浏览器上面,不安全,cookie 容易被修改,被模仿,可以被解读。

从登陆功能认识cookie

  1. html页面,提供输入用户名,密码
  2. 视图:
    • 校验用户的身份密码是否正确,是否一致。
    • 正确:返回登录成功提示,并跳转对应的页面。同时下发cookie,保存在浏览器上。
    • 错误:返回账号或密码不正确的提示信息
  3. 再次访问:携带cookie 访问,视图校验cookie
from django.http import JsonResponse,HttpResponse,HttpResponseRedirect 

def login(request): 
	## 登录 
	if request.method == "POST": 
		username = request.POST.get("username") 
		password = request.POST.get("password") 
		if username and password:
			user = User.objects.filter(name = username,
			password = setPassword(password)).first() 
			if user: 
				## 登录成功 
				return HttpResponseRedirect("/index")
			else: 
				# 登录失败,重定向到首页
				return HttpResponseRedirect("/login") 
		else:
			return HttpResponse("参数为空") 
	return render(request,"login.html")

cookie的使用

  1. 设置cookie

     response.set_cookie('key',value)
     
     response.set_cookie('username',name)
     response.set_cookie('password',password)
    
  2. cookie的参数

keycookie 的键
value值,key对应的参数值
max_age有效期,cookie有效的最长时间
expirescookie 的超时时间,和max_age冲突,选一个即可
path=’/’cookie 起作用的范围
domaincookie 起作用的域名
secure=FalseTrue:使用https传递cookie ,False:使用http传递cookie
httponly=FalseTrue:只用http 传递cookie
samesite=None相同的网站使用 cookie
  1. 获取cookie

    代码:request.COOKIES.get('username')

  2. 删除cookie
    退出登录的删除cookie

     def logout(request):
     	response = HttpResponseRedirect('/login')
     	response.delete_cookie('username')		# 删除cookie
     	return response
    

session

特点

	session 为了解决cookie 不安全的特性,而出现的session 会话机制
	session 需要依赖cookie 下发,但是下发的session_id,session 保存在服务器上面,经常保存在数据库当中
	web 中session 叫会话机制,是一种相对安全的保存用户信息,校验用户身份的一种机制

会话:只一次通信从开始到结束

session 和cookie 的区别

  • cookie放在浏览器上面
  • session 放在服务器上面,一般保存在数据库当中
  • 校验cookie速度快
  • 校验session 速度慢,但是安全性相对高

session操作

  1. 设置session
    session是类字典对象,可以像字典一样去使用session
    代码:request.session["username"] = username
    在这里插入图片描述

  2. session 的获取
    代码:username_session = request.session.get("username")
    在这里插入图片描述

  3. session 的删除

     def logout(request):
     	response = HttpResponseRedirect('/login')
     	response.delete_cookie('username')		# 删除cookie
     	del request.session["username"]		# 删除session
     	return response
    
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值