Django(61)认证组件源码分析

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


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/166123.html原文链接:https://javaforall.net

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


相关推荐

  • rsyslog日志管理[通俗易懂]

    rsyslog日志管理[通俗易懂]文章目录简介基本维护核心概念实例配置客户端日志服务器输出日志到mysql简介rsyslog是一个快速的日志处理系统,具有卓越的性能和出色的安全性,采用模块化设计,他可以从各种数据源中接收输入、转换数据再将结果输出到指定的位置。他不仅适用于企业,也适用于小型系统。rsyslog是一个c/s架构,既可以作为日志客户端上报日志,也可以作为服务端接收日志rsyslog是模块化设计,因此很多功能需要…

    2022年9月24日
  • vue组件注册可以是以下哪种方式_自定义vue组件分三个步骤

    vue组件注册可以是以下哪种方式_自定义vue组件分三个步骤组件的组织通常一个应用会以一棵嵌套的组件树的形式来组织:例如,你可能会有页头、侧边栏、内容区等组件,每个组件又包含了其它的像导航链接、博文之类的组件。为了能在模板中使用,这些组件必须先注册以便

    2022年7月29日
  • 十项新技术包括哪些技术?_建筑十项新技术那些

    十项新技术包括哪些技术?_建筑十项新技术那些  当今世界,科技发展日新月异,科学新概念层出不穷,新技术工艺相继闪亮登场。纳米材料、信息技术、生物制药、节能环保科技领域的创新和研发引人注目,鼓舞人心。一项新的科技发明会在不知不觉中改变我们的生活,影响社会发展的历程。  近日,俄罗斯《大众机械》杂志撰文指出,以下科技新技术会使人类生活因此而更加完美无缺。  相变随机闪存(PRAM)  手机、手提电脑等移动设备对存储器的要求,与

    2022年9月4日
  • JS break和continue的区别

    JS break和continue的区别break和continue都是用来控制循环结构的,主要是停止循环。break       有时候我们想在某种条件出现的时候终止循环而不是等到循环条件为false才终止。  这时我们可以使用break来完成。break用于完全结束一个循环,跳出循环体执行循环后面的语句。for(vari=0;i<5;i++){if(i%2!=0){break;//结束…

    2022年5月5日
  • 用html做简单的日记,学习HTML日记[通俗易懂]

    用html做简单的日记,学习HTML日记[通俗易懂]1。html>是什么意思?[1]DOCTYPE标签是一种标准通用标记语言的文档类型声明,它的目的是要告诉标准通用标记语言解析器,它应该使用什么样的文档类型定义(DTD)来解析文档。html5标准网页声明,原先的是一串很长的字符串,现在是这个简洁形式,支持html5标准的主流浏览器都认识这个声明。表示网页采用html52.开始标签结束标签3.这是最外的一层中文编码目前在大部分浏览器中,…

    2022年5月27日
  • docker 导出所有镜像[通俗易懂]

    docker 导出所有镜像[通俗易懂]docker导出所有镜像

    2022年9月6日

发表回复

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

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