Django-----cookie&session
cookie
保存在用户浏览器端的一个键值对(别人给的凭证)
服务端可以向用户浏览器写cookie
客户端每次发请求会携带cookie去(放在请求头里面)
淘宝的cookie 京东的cookie(http的连接很简单,是无状态的,为了登录后下次来还认识,也为了避免再次登录)
功能:1.一段时间内免登录 2.浏览器自动记住账号密码 3.修改每次看的页数(只用修改一次)
禁用浏览器的cookie(无限投票例子)
用户第一次请求时候后端处理代码
def login(request):
if request.method=="GET":
return render(request,'登录界面')
else:
user=request.POST.get('username')
pwd=request.POST.get('password')
print(user,pwd)
if user=='akagi' and pwd== '521':
obj=redirect('用户后台')
#obj.set_cookie('ticket','sdfasdas',max_age=10,path='/')#max_age=10 十秒后cookie失效 里面的path属性指定这个cookie内容在哪个url生效
obj.set_signed_cookie('ticket','19438',salt='jjjjjj',max_age=10)#cookie加密(签名)需要做异常处理 解密解密p57
#set_cookie(self, key, value='', max_age=None, expires=None, path='/',
# domain=对域名划分sso, secure=https相关, httponly=安全相关js代码无法获取到, samesite=??):
return obj
else:
return render(request, '登录界面')
后端会检查用户请求的时候是否带有相关的cookie,有则通过再做其他操作,无则返回登录界面
def classes(request):
try:
#tk=request.COOKIES.get('ticket') #自定义名字
tk=request.get_signed_cookie('ticket',salt='jjjjjj') #=加密时候salt要对应 签名
except KeyError:
return redirect('/login/')
#print('tk=',tk)
if not tk:
return redirect('/login/')
session(推荐)
保存在服务器端的数据(本质是键值对)
应用的时候依赖于cookie
作用:保持会话( Web网站)
好处:敏感信息不会直接给客户端(cookie容易被伪造,即使签了名也能被破解,因为数据在浏览器端)
原理:用户请求,返回一串随机字符串,然后服务端也保存这个随机字符串为key,一个字典为value(里面可以记录各种数据)
用户第一次请求时候后端处理代码
def session_login(request):
if request.method=='GET':
return render(request,'session.html')
else:
u=request.POST.get('user')
p=request.POST.get('pwd')
obj=models.UserAdmin.objects.filter(username=u,password=p).first()
if obj:
#1.生成随机字符
#2.通过cookie发给客户端
#3.服务端保存(随机字符串1,{'username':'qwe',} ;下次验证两端各一份) 对应cookie里面的sessionid
#(数据,类似键值对 放到数据库表里面了)
request.session['username']=obj.username #做三件事123 键值对
request.session['password'] = obj.password
#随着增加的键值对越多,数据库session_key不变,session_data变长
request.session['email'] = 'love@qq.com'
request.session.set_expiry(5) #设置失效时间
# * 如果value是个整数,session会在些秒数后失效(适用于整个Django框架,即这个数值时效时整个页面都会session失效)。
#* 如果value是个datatime或timedelta,session就会在这个时间后失效。
#* 如果value是0,用户关闭浏览器session就会失效。
#* 如果value是None,session会依赖全局session失效策略。
return redirect('/indexxx/')
else:
return render(request,'session.html',{'message':'请重新登录'})
对session验证
def indexxx(request):
#1.获取客户端cookie种的随机字符串
#2.去session种查找有没有随机字符
#3.去session中查看对应key的value中是否有值
v=request.session.get('username') #获取session里面key为username的value
s=request.session.session_key
b=request.session.values()
print(s)
if v:
return HttpResponse('ok,登录成功:%s---%s----%s' %(v,s,b))
else:
return redirect('/session_login/')
PS:
DJANGO 设置SESSION过期时间
cookie和session的详解与区别
Django-----cookie&session的更多相关文章
- Django Cookie Session和自定义分页
Django中操作Cookie 获取Cookie request.COOKIES['key'] request.get_signed_cookie(key, default=RAISE_ERROR, ...
- django cookie session 自定义分页
cookie cookie的由来 http协议是无状态的,犹如人生若只如初见,每次都是初次.由此我们需要cookie来保持状态,保持客户端和服务端的数据通信. 什么是cookie Cookie具体指的 ...
- day55:django:cookie&session
目录 1.Cookie 1.Cookie前戏 2.Cookie的引入 3.django中操作cookie 2.Session 1.cookie的局限性 2.session技术 3.django操作se ...
- Django Cookie,Session
Cookie Cookie的由来 HTTP协议是无状态的,每次请求都是独立的,对服务器来说,每次的请求都是全新的,上一次的访问是数 据是无法保留到下一次的 某些场景需要状态数据或者中间数据等相关对下一 ...
- django cookie session操作
Cookie是什么? cookie说的直白点就是保存在用户浏览器端的一个键值对,举个例子,你现在登录了京东商城,你把浏览器关闭之后,你再打开京东,你还是可以对你的账户继续操作,已经购买的商品,订单都是 ...
- django cookie,session,auth
一.最完美的auth auth_user 是用来存储的用户注册的username,password auth 首先需要引入模块 from django.contrib import auth 用户认证 ...
- Python Web框架篇:Django cookie和session
part 1 概念 在Django里面,cookie和session都记录了客户端的某种状态,用来跟踪用户访问网站的整个回话. 两者最大的区别是cookie的信息是存放在浏览器客户端的,而sessio ...
- 浅析Django之session与cookie
浅析Django之session与cookie 1 session与cookie概述 原理: 由于HTTP协议是无状态,无连接的,当用户发起网路请求时,需要服务端能标识用户ID,用以存储用户相关信息, ...
- python Django cookie和session
在一个会话的多个请求中共享数据,这就是会话跟踪技术.例如在一个会话中的请求如下: 请求银行主页: 请求登录(请求参数是用户名和密码): 请求转账(请求参数与转账相关的数据): 请求信誉卡还款(请求参 ...
- django - 总结 - cookie|session
Cookie是通过HTTP请求和响应头在客户端和服务器端传递的. 在Web开发中,使用session来完成会话跟踪,session底层依赖Cookie技术. --------------------- ...
随机推荐
- Lua协程的一个例子
很久没记录笔记了,还是养成不了记录的习惯 下面是来自 programming in lua的一个协程的例(生产者与用户的例子) 帖代码,慢慢理解 -- Programming in Lua Corou ...
- python 字典dict 增删改查操作
初始化: a. data_dict = {} b. data_dict1 = dict() c. data_dict2 = {'key':'value'} 新增: a. data_dict[key]= ...
- 解释内存中的栈(stack)、堆(heap)和方法区(method area)的用法?
通常我们定义一个基本数据类型的变量,一个对象的引用,还有就是函数调用的现场保存都使用JVM中的栈空间:而通过new关键字和构造器创建的对象则放在堆空间,堆是垃圾收集器管理的主要区域,由于现在的垃圾收集 ...
- 什么是 AQS ?
AQS 是 AbustactQueuedSynchronizer 的简称,它是一个 Java 提高的底层同步工具类,用一个 int 类型的变量表示同步状态,并提供了一系列的 CAS 操作来管理这个同步 ...
- springboot-数据库访问之mybatis
选中mysqldirver,数据库驱动器 选中jdbc ,帮我们配置数据源,连接数据库 选中mybatis,持久层 <!-- 这个不是springboot官方出来的,是mybatis为了设备sp ...
- spring-boot-learning-配置文件相关
Spring-boot的配置文件 springboot通过那个下面的依赖去读取配置文件的上下文: <!-- https://mvnrepository.com/artifact/org. ...
- 学习k8s(三)
一.Kubernetes核心概念 1.Kubernetes介绍 Kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展.如果你曾经用过Docker容器技术部署 ...
- scrapy框架初识及使用
一.什么是Scrapy? Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,非常出名,非常强悍.所谓的框架就是一个已经被集成了各种功能(高性能异步下载,队列,分布式,解析,持久化等) ...
- BootstrapBlazor 智能生成神器(一)AutoGenerateColumnAttribute 特性介绍
原文连接:https://www.cnblogs.com/ysmc/p/16074645.html BootstrapBlazor 官网地址:https://www.blazor.zone 介绍 Bo ...
- 面试题目:手写一个LRU算法实现
一.常见的内存淘汰算法 FIFO 先进先出 在这种淘汰算法中,先进⼊缓存的会先被淘汰 命中率很低 LRU Least recently used,最近最少使⽤get 根据数据的历史访问记录来进⾏淘汰 ...