Django DRF - 认证Authentication

这篇具有很好参考价值的文章主要介绍了Django DRF - 认证Authentication。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.概念

身份验证是将传入请求与一组标识凭据(例如,请求来自的用户或与其进行签名的令牌)相关联的机制。然后,权限和限制策略可以使用这些凭据来确定是否应允许该请求。

身份验证本身不会允许或不允许传入的请求,它只会标识发出请求的凭据。

认证管理一般和权限管理配合使用。
文档:https://www.django-rest-framework.org/api-guide/authentication/

2.认证方式

1.基本认证(BasicAuthentication)

此身份验证方案使用HTTP基本身份验证,该身份针对用户的用户名和密码进行了签名。基本身份验证通常仅适用于测试。
Django DRF - 认证Authentication
如果成功通过身份验证request.user将是DjangoUser实例。

未经授权的身份验证的响应将被拒绝 HTTP 401 Unauthorized
Django DRF - 认证Authentication

2. 会话认证(SessionAuthentication)

此身份验证方案使用Django的默认会话后端进行身份验证。会话身份验证适用于在与您的网站相同的会话上下文中运行的AJAX客户端。

如果成功通过身份验证request.user将是DjangoUser实例。

未经授权的身份验证的响应将被拒绝HTTP 403 Forbidden。

3. 令牌认证(TokenAuthentication)

此身份验证方案使用简单的基于令牌的HTTP身份验证方案。令牌认证适用于客户端-服务器设置,例如本机台式机和移动客户端。

为了使客户端进行身份验证,令牌密钥应包含在AuthorizationHTTP标头中。密钥应以字符串文字“ Token”作为前缀,并用空格分隔两个字符串。例如:

Authorization:Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b

认证失败会有两种可能的返回值:

  • 401 Unauthorized 未认证
  • 403 Permission Denied 权限被禁止

3. 认证全局设置

可以在配置文件中配置全局默认的认证方案

REST_FRAMEWORK = {
    # 默认的认证列表: session
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework.authentication.SessionAuthentication',  # session认证
    )
}

因为 认证一般都是和权限配合使用,当我们不设置权限时,是没有任何效果的。
我们需要额外添加一条配置信息才有效果。配置信息的意思是 只有认证登录用户才可以访问视图

REST_FRAMEWORK = {
    # 默认的认证列表: session
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.SessionAuthentication',
    ],
    # 默认的权限列表: 只有登录用户才可以访问
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticated',
    )
}

添加了权限配置之后,会出现如下响应
Django DRF - 认证Authentication

4.认证指定视图设置

也可以在每个视图中通过设置authentication_classess属性来设置

from book.models import BookInfo
from book.serializers import BookInfoModelSerializer
from rest_framework.viewsets import ModelViewSet
from rest_framework.authentication import TokenAuthentication


class BookModelViewSet(ModelViewSet):
    queryset = BookInfo.objects.all()
    serializer_class = BookInfoModelSerializer

    #单个视图,设置单独认证方式
    authentication_classes = [TokenAuthentication]

设置
Django DRF - 认证Authentication
以上就是Django DRF - Authentication权限认证的相关介绍,希望对你有所帮助。文章来源地址https://www.toymoban.com/news/detail-411621.html

到了这里,关于Django DRF - 认证Authentication的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • DRF JWT认证进阶

    (1)模型准备 模型准备(继承 django 的 auth_user 表) 添加配置文件,修改用户模型表为自定义表 (2)知识点绑定方法 详情请见:Python 面向对象之绑定和非绑定方法_python 绑定方法-CSDN博客 实例方法 当 对象调用 实例方法时( 对象.实例方法() ), 自动将对象当作第一个参数传

    2024年04月27日
    浏览(23)
  • DRF的认证组件(源码分析)

    在drf中也给我们提供了 认证组件 ,帮助我们快速实现认证相关的功能,例如: 定义一个认证的类并继承BaseAuthentication 接下来说说 “返回None” 是咋回事。 在视图类的 authentication_classes 中定义认证类时,传入的是一个列表,支持定义多个认证类。 当出现多个认证类时,drf内

    2023年04月21日
    浏览(23)
  • Django进阶:DRF(Django REST framework)

    DRF 即 Django REST framework 的缩写,官网上说: Django REST framework 是一个强大而灵活的工具包,用于 构建Web API 。 简单来说:通过DRF创建API后,就可以通过HTTP请求来获取、创建、更新或删除数据(CRUD)。 那么为什么要构建API呢? 在Django中,我们通过 model-view-template 实现了 后端和前

    2024年02月11日
    浏览(38)
  • django的DRF(三)

    DRF(Django Rest Framework)是可以快速基于Restful开发得Django应用得插件,功能非常多,被广泛应用。 所谓Restful风格就是不在用户请求的URL当中说明 “操作动作(create,delete,put)”。而是直接请求资源,通过不同的http方法来做对应的操作。 比如: 注册: 在settings.py文件中进行注册

    2024年02月21日
    浏览(39)
  • Django系列之DRF简单使用

    models.py serializers.py app01/views.py project/urls.py app01/urls.py 使用 SimpleRouter() 可以帮我们实现五个基础的 action 方法: {“get”: “list”, “post”: “create”, “get/id”: “retrieve”, “put”: “update”, “delete”: “`destroy”} 如果需要增加一些其他的路由视图,就需要用 action 声明了。

    2024年02月15日
    浏览(35)
  • Django系列之DRF搜索和过滤

    1. model之间关系 2. DRF搜索 在DRF中使用搜索功能,只需要在 viewsets 视图类中定义 filter_backends 和 search_fields 即可使用。 filter_backends :后端使用的搜索和过滤类。 search_fields :要执行搜索条件的字段,搜索为模糊查询(要在哪些字段上执行模糊查询,支持多表连表查询)。 对应

    2024年02月07日
    浏览(40)
  • django框架向DRF框架演变过程详解

    主要知识点: Django框架 视图函数 1、在 Django 项目中创建一个应用(如果还没有创建): 2、在项目的 models.py 文件中定义项目模型 3、运行数据库迁移命令,以创建项目表: 4、在应用的 views.py 文件中编写视图函数来处理查询项目列表的请求: 5、在项目的 urls.py 文件中配置

    2024年02月16日
    浏览(38)
  • 【Django 05】Django-DRF(ModelViewSet)、路由组件、自定义函数

    ModelViewSet 是 Django REST framework 提供的一个视图集类,它封装了常见的模型操作方法。 模型类提供了默认的增删改查功能。 它继承自 GenericViewSet 、 ListModelMixin 、 RetrieveModelMixin 、 CreateModelMixin 、 UpdateModelMixin 、 DestoryModelMixin 。 知识点 请求 url 特点 GenericViewSet 提供一组通用的

    2024年02月08日
    浏览(40)
  • 面试之 Python 框架 Flask、Django、DRF

    Django:大而全的框架。它的内部组件比较多,如 ORM、Admin、中间件、Form、ModelForm、Session、缓存、信号、CSRF等,功能也都很完善。 flask:微型框架,内部组件就比较少了,但是有很多第三方组件来扩展它,比如 wtform(与django的modelform类似,表单验证)、flask-sqlalchemy(操作数

    2024年02月05日
    浏览(51)
  • Django_rest_framework-drf 笔记

    Django-drf-序列化器高级用法之SerializerMethodField - 知乎 (zhihu.com) 一句话: search_fields  里的字段,是做模糊查询的字段; filter_fields  里的字段,是做精确查询的字段。 科普search_fields与filter_fields的区别_空气中的臭氧的博客-CSDN博客 一句话: related_name = \\\'test\\\' publish_obj.test.all() 

    2024年02月16日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包