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)
没有达到限次:正常访问接口
达到限次:限制时间内不能访问,限制时间达到后,可以重新访问
 

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

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/165762.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • ribbon负载均衡策略有哪几种_负载均衡策略的是

    ribbon负载均衡策略有哪几种_负载均衡策略的是目录1.基于Ribbon方式的负载均衡,Netflix默认提供了七种负载均衡策略,2.@LoadBalanced1.基于Ribbon方式的负载均衡,Netflix默认提供了七种负载均衡策略,对于SpringCloudAlibaba解决方案中又提供了NacosRule策略,默认的负载均衡策略是轮训策略。如图所示:当系统提供的负载均衡策略不能满足我们需求时,我们还可以基于IRule接口自己定义策略.Ribbon是什么?(Netflix公司提供的负载均衡…

    2022年10月13日
  • 微信公众号tp3.2放进Model无效,几种实例化的方法试过,还是提示无法提供服务…

    微信公众号tp3.2放进Model无效,几种实例化的方法试过,还是提示无法提供服务…

  • kfold交叉验证好处_sklearn交叉验证

    kfold交叉验证好处_sklearn交叉验证运用Kfold交叉验证时,在一个限度内k的值越大越好。因为k越大我们验证的次数就越多,最后取出来的平均数越能代表训练模型的准确度。但是k是需要在一个限度之内的。k太大有两个坏处。1.容易给机器造成过重负担,花费大量时间。2.每一次验证的测试集(或验证集)中数据太少,很难得到准确的误报率。总体而言,k一般取10,取值依不同项目情况而定,当然一定存在k<n(训练集数据条数)。…

  • 安卓浏览器横评_flash浏览器

    安卓浏览器横评_flash浏览器近日国外媒体AndroidAuthority就对全球使下载最大的11款手机浏览器进行了性能方面的横向评测,相信在看完后,你能够从中找到更适合自己的手机浏览器。(注:本测试主要针对浏览器性能,并不能说明浏览器的整体效果)一、测试设备、工具及浏览器介绍1、测试设备Nexus4,运行Android4.4.2系统。2、测试浏览器本次测试的浏览器总共11款,分别是:-百度浏览器3.1.0.2(国际…

    2022年10月23日
  • web服务:Nginx和Apache的区别

    web服务:Nginx和Apache的区别一、Nginx特点1、轻量级,采用C进行编写,同样的web服务,会占用更少的内存及资源。  2、抗并发,nginx以epollandkqueue作为开发模型,处理请求是异步非阻塞的,负载能力比apache高很多,而apache则是阻塞型的。在高并发下nginx能保持低资源低消耗高性能,而apache在PHP处理慢或者前端压力很大的情况下,很容易出现进程数飙升,从而拒绝服务的现象。  …

发表回复

您的电子邮箱地址不会被公开。

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