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的更多相关文章

  1. Django Cookie Session和自定义分页

    Django中操作Cookie 获取Cookie request.COOKIES['key'] request.get_signed_cookie(key, default=RAISE_ERROR, ...

  2. django cookie session 自定义分页

    cookie cookie的由来 http协议是无状态的,犹如人生若只如初见,每次都是初次.由此我们需要cookie来保持状态,保持客户端和服务端的数据通信. 什么是cookie Cookie具体指的 ...

  3. day55:django:cookie&session

    目录 1.Cookie 1.Cookie前戏 2.Cookie的引入 3.django中操作cookie 2.Session 1.cookie的局限性 2.session技术 3.django操作se ...

  4. Django Cookie,Session

    Cookie Cookie的由来 HTTP协议是无状态的,每次请求都是独立的,对服务器来说,每次的请求都是全新的,上一次的访问是数 据是无法保留到下一次的 某些场景需要状态数据或者中间数据等相关对下一 ...

  5. django cookie session操作

    Cookie是什么? cookie说的直白点就是保存在用户浏览器端的一个键值对,举个例子,你现在登录了京东商城,你把浏览器关闭之后,你再打开京东,你还是可以对你的账户继续操作,已经购买的商品,订单都是 ...

  6. django cookie,session,auth

    一.最完美的auth auth_user 是用来存储的用户注册的username,password auth 首先需要引入模块 from django.contrib import auth 用户认证 ...

  7. Python Web框架篇:Django cookie和session

    part 1 概念 在Django里面,cookie和session都记录了客户端的某种状态,用来跟踪用户访问网站的整个回话. 两者最大的区别是cookie的信息是存放在浏览器客户端的,而sessio ...

  8. 浅析Django之session与cookie

    浅析Django之session与cookie 1 session与cookie概述 原理: 由于HTTP协议是无状态,无连接的,当用户发起网路请求时,需要服务端能标识用户ID,用以存储用户相关信息, ...

  9. python Django cookie和session

    在一个会话的多个请求中共享数据,这就是会话跟踪技术.例如在一个会话中的请求如下:  请求银行主页: 请求登录(请求参数是用户名和密码): 请求转账(请求参数与转账相关的数据): 请求信誉卡还款(请求参 ...

  10. django - 总结 - cookie|session

    Cookie是通过HTTP请求和响应头在客户端和服务器端传递的. 在Web开发中,使用session来完成会话跟踪,session底层依赖Cookie技术. --------------------- ...

随机推荐

  1. Notion-douan:搭建自己的阅读清单

    前言 交完论文盲审稿,终于从接近一年的实习.秋招和论文的忙碌中闲下来. 在复盘秋招的时候发现自己虽然看过不少书,但缺少整理和思考,所以想趁这个机会梳理一下自己的阅读习惯,希望以后再读新的东西可以更系统 ...

  2. java 中有几种方法可以实现一个线程?

    继承 Thread 类 实现 Runnable 接口 实现 Callable 接口,需要实现的是 call() 方法

  3. Elasticsearch 在部署时,对 Linux 的设置有哪些优化方法 ?

    1.关闭缓存 swap; 2.堆内存设置为:Min(节点内存/2, 32GB); 3.设置最大文件句柄数: 4.线程池+队列大小根据业务需要做调整: 5.磁盘存储 raid 方式--存储有条件使用 R ...

  4. Effective Java —— 消除过期的对象引用

    本文参考 本篇文章参考自<Effective Java>第三版第七条"Eliminate obsolete object references" Memory leak ...

  5. js技术之input只读功能可以通过js设置readonly

    一.input标签 输入项标签,不同type属性,会有不同的显示效果和不同的作用 input标签的属性: disabled:表单项禁用,不可修改值,也不会被提交 readonly:表单项只读,不可修改 ...

  6. 遇到过的问题之“解决 No qualifying bean of type 问题”

    1.问题 解决 No qualifying bean of type 问题 2.思路: 1 检查是否添加了对应注解 2 检查配置是否正确,扫描包名, 类名及id是否正确 一 . 传统SSM项目 ssm ...

  7. JavaScript的取值小技巧之“中括号[]取值法”

    一.简介 做下记录,今天看了一篇很有意思的文章,学到了这个取值的小技巧 正常的话我们一般都是用对象直接去'.'对应的属性名(也就是键值对的键)来获取对应的值 这里记录的是另一种取值方式,他是采用中括号 ...

  8. 攻防世界 easytornado

    easytornado 进入环境就这样子 我们逐一访问看看 进入flag.txt提示flag in /fllllllllllllag我们访问fllllllllllllag看看 报了一个error,且在 ...

  9. 微信小程序:自定义组件的数据传递

    一.前言 如果小程序中有可复用的UI且具有一定的功能性,就可以使用自定义组件将其封装起来.下面介绍一个简单的组件和一个复杂的组件. 二.简单的组件(计数器) 1. 组件功能介绍 这个组件常见于外卖软件 ...

  10. 前端每日实战:134# 视频演示如何用 CSS 和 GSAP 创作一个树枝发芽的 loader

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/LJmpXZ 可交互视频 此视频是可 ...