day69 cookie与session

本文介绍了Cookie和Session的基本概念与区别,通过实例展示了Cookie的操作,包括设置、获取和超时时间的设置。同时,探讨了Session的工作原理,强调了其保存在服务端并基于Cookie工作的特性,以及在不同场景下的应用和配置选项。
摘要由CSDN通过智能技术生成

day 69

今天这一篇准备换一种格式

昨日内容补充

封装思路

  1. 先写面条版,完成功能再去考虑优化
  2. 尝试封装函数
  3. 尝试面向对象

今日内容概要

  1. forms 组件
  2. cookie 与 session
  3. 视图函数(CBV)如何添加装饰器

forms 组件源码

forms 组件源码的切入点

# forms 组件的所有功能基本都出自于该方法
def full_clean(self):

cookie 与 session 简介

保存在浏览器的信息都可以叫 cookie

  1. 用户一次登录成功以后,信息自动保存在浏览器本地。
  2. 之后访问的时候,自动将保存在本地浏览器的用户名和密码发送给服务端
  3. 服务端获取后自动验证。

cookie

  1. 保存在浏览器的 kv键值对,都可以叫 cookie
  2. 都是键值对的形式
  3. 安全优化 1 :
    1. 当登录成功以后,服务端产生一个随机字符串,交给浏览器客户端保存
    2. 服务端用 kv键值对的形式保存这个随机字符串
    3. 形式:随机字符串1:用户1信息
    4. 之后访问,都带着这个随机字符串
    5. 隐患:如果你拿到了随机字符串,也可以访问。

session

  1. 保存在服务端的 kv键值对(可以有多个)
  2. 经不住量大

token(下次再讲)

  1. 服务端不再保存数据,
  2. 用自己独有的方式,将一段用户信息加密处理
  3. 加密以后,拼接在信息后面,整体返回给浏览器保存。
  4. 浏览器下次访问的时候,带着信息,服务端切取前面一段信息,再次加密。跟浏览器尾部密文进行比对。

jwt 认证(后期会讲)

小总结

  1. cookie 在浏览器
  2. session 在服务端
  3. session 基于 cookie 工作。
  4. 大部分保存用户状态操作,都需要 cookie

cookie 操作

浏览器 / applications / cookies,里面有很多键值对

  1. 所有要用户登录的网站,都要保存cookie

  2. 浏览器可以选择拒绝保存

    1. 浏览器设置可以不允许保存。
    2. 然后登录页面都没了

最简单的操作原理

# 原本的 views 函数返回值
return HttpResponse()

# 操作 cookies 就改成这样
obj1 = HttpResponse()
return obj1

设置 cookie 和获取 cooke

# 设置
obj.set_cookie(key, value)

# 获取
request.COOKIES.get(key)

写一个真正的登录功能

# 装饰器
def login_auth(func):
    '''
    把 request 单独领出来,
    如果拿得到 username,就继续。否则重定向到登录页面。
    登录操作完成以后,要可以返回到最初想访问的页面
    :param func:
    :return:
    '''
    def inner(request, *args, **kwargs):
        target_url = request.get_full_path()
        if request.COOKIES.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值