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. 程序语言与编程实践7-> Java实操4 | 第三周作业及思路讲解 | 异常处理考察

    第三周作业,可能是异常那一章当时没怎么听,此前也不怎么接触,感觉还挺陌生的. 00 第1题 00-1 题目 /* * To change this license header, choose Lic ...

  2. JWT jti和kid属性的说明

    jti chaim=== JWT ID " jti"(JWT ID)声明为JWT提供了唯一的标识符. 标识符值的分配方式必须确保将相同值偶然分配给不同数据对象的可能性可以忽略不计: ...

  3. java中的修饰符和基本数据类型

    1.java中的修饰符 java中的修饰符主要是用来对类资源进行一个权限控制,上面表格表现的很清晰,无需多言. 2.java中的基本数据类型 java中的数据类型分为引用类型和基本类型.基本数据类型有 ...

  4. Container 在微服务中的用途是什么?

    容器是管理基于微服务的应用程序以便单独开发和部署它们的好方法.您可以将 微服务封装在容器映像及其依赖项中,然后可以使用它来滚动按需实例的微服务, 而无需任何额外的工作.

  5. Spring Framework 有哪些不同的功能?

    轻量级 - Spring 在代码量和透明度方面都很轻便.IOC - 控制反转 AOP - 面向 切面编程可以将应用业务逻辑和系统服务分离,以实现高内聚.容器 - Spring 负 责创建和管理对象(B ...

  6. String s = new String(“xyz”);创建了几个字符串对象?

    两个对象,一个是静态区的"xyz",一个是用 new 创建在堆上的对象.

  7. SVG是什么?

    SVG表示(scalable vector graphics)可缩放矢量图形.这是一个基于文本的图形语言,它可以绘制使用文本.线.点等的图形,因此可以轻巧又快速地渲染.

  8. TypeScript中变量调用时后缀感叹号和问号的区别

    typescript编译时,当我们开启严格模式时,下面的代码就会报错: function doSomething(x: string | null) { console.log("Hello ...

  9. linux系统引导过程

    linux系统引导过程 linux-0.11引导时,将依次运行BIOS程序.bootsect.s.setup.s和head.s,完成引导过程后进入到main函数运行.BIOS完成硬件的检查与初始化等工 ...

  10. 横竖屏切换android:screenOrientation属性的使用

    在开发android的应用中,有时候需要限制横竖屏切换,只需要在AndroidManifest.xml文件中加入android:screenOrientation属性限制.    android:sc ...