Django(61)认证组件源码分析「建议收藏」

Django(61)认证组件源码分析「建议收藏」认证组件源码入口APIView下的dispatch下的self.initial(request,*args,**kwargs),源码如下:definitial(self,request,

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

认证组件源码入口

APIView下的dispatch下的self.initial(request, *args, **kwargs),源码如下:

def initial(self, request, *args, **kwargs):
    """
    在调用方法处理程序之前运行任何需要发生的事情
    """
    # 获取请求的后缀格式
    self.format_kwarg = self.get_format_suffix(**kwargs)

    # 确定使用哪种渲染器和媒体类型来渲染响应,并存储
    neg = self.perform_content_negotiation(request)
    request.accepted_renderer, request.accepted_media_type = neg

    # 如果正在使用版本控制,则确定 API 版本。
    version, scheme = self.determine_version(request, *args, **kwargs)
    request.version, request.versioning_scheme = version, scheme

    # 3大认证,确保传入请求被允许
    self.perform_authentication(request)
    self.check_permissions(request)
    self.check_throttles(request)

 

三大认证

 

认证组件

self.perform_authentication(request)

认证组件作用:校验用户 – 游客合法用户非法用户

  • 游客:代表校验通过,直接进入下一步校验(权限校验)
  • 合法用户:代表校验通过,将用户存储在request.user中,再进入下一步校验(权限校验)
  • 非法用户:代表校验失败,抛出异常,返回403权限异常结果

 

权限组件

self.check_permissions(request)

权限组件:校验用户权限 – 必须登录所有用户登录读写游客只读自定义用户角色

  • 认证通过:可以进入下一步校验(频率认证)
  • 认证失败:抛出异常,返回403权限异常结果

 

频率组件

self.check_throttles(request)

频率组件:限制视图接口被访问的频率次数 – 限制的条件(IP、id、唯一键)频率周期时间(s、m、h)频率的次数(3/s)
没有达到限次:正常访问接口
达到限次:限制时间内不能访问,限制时间达到后,可以重新访问
 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/165417.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mybatis分页sql语句_MySQL 分页查询

    mybatis分页sql语句_MySQL 分页查询Mybatis可以使用RowBounds进行分页dao层sql的xml文件,因为是java层面的分页,所以sql不需要分页单元测试因为参数是第几个开始,这样很不友好,我们一般情况分页是第几页开始,页大小是多少,所以这就需要我们自己封装一层分页对象packagecom.lingaolu.utils;importorg.apache.ibatis.session.RowBounds;/***@author林高禄*@create.

    2022年9月22日
    2
  • js斐波那契数列递归算法_php斐波那契数列递归算法

    js斐波那契数列递归算法_php斐波那契数列递归算法斐波那契数列(Fibonaccisequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(LeonardoFibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……从数列可以看出,从第三项开始,每一项都是前两项的和,f(n)=f(n-1)+f(n-2)那么用js怎么求斐波那契数列第n项的值呢?1.普通递归计算:functionfibonacci(n){if(n==1||n==2)retu

    2022年10月4日
    3
  • 日期选择器date、week、time、datetime、datetime-local类型

    日期选择器date、week、time、datetime、datetime-local类型

    2021年11月8日
    100
  • jQuery 如何得到 scrollHeight 的值

    jQuery 如何得到 scrollHeight 的值之前为了得到dom的scrollHeight的值,一直写法是这样的: [b]$(‘#box’)[0].scrollHeight[/b]今天我知道了另外一个方法: [b]$(‘#box’).prop(‘scrollHeight’)[/b]注意: [b]$(‘#box’).arrt(‘scrollHeight’);[/b]这个写法是undefined值[i

    2022年7月24日
    12
  • EXCEL宏编程纪念

    EXCEL宏编程纪念       不久前被叫去编写宏,这EXCEL宏真是麻烦! 可能以后不会再遇到有编写宏的经历了,故而贴出来以做个纪念: Subdirect_Price()query_dir_volume宏由颜清国编写,时间:2007-4-9定义变量DimcRowsAsInteger总行数DimcColumnsAsInteger总列数DimHEADERCOLORINDE

    2022年5月5日
    40
  • 邮件编辑指南

    邮件编辑指南

    2021年7月3日
    72

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号