zoukankan      html  css  js  c++  java
  • django rest framework authentication

    身份验证


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

    REST framework 提供了许多开箱即用的身份验证方案,同时也允许你实施自定义方案。

    身份验证始终在视图的开始处运行,在执行权限和限制检查之前,在允许继续执行任何其他代码之前。

    request.user 属性通常会设置为 contrib.auth 包的 User 类的一个实例。

    request.auth 属性用于其他身份验证信息,例如,它可以用来表示请求已签名的身份验证令牌。

    如何确定身份验证


    认证方案总是被定义为一个类的列表。 REST framework 将尝试使用列表中的每个类进行认证,并将使用成功认证的第一个类的返回值来设置 request.user 和 request.auth 。

    如果没有类进行身份验证,则将 request.user 设置为 django.contrib.auth.models.AnonymousUser 的实例,并将 request.auth 设置为 None.

    可以使用 UNAUTHENTICATED_USER 和 UNAUTHENTICATED_TOKEN 设置修改未经身份验证的请求的 request.user 和 request.auth 的值。

    设置认证方案


    默认的认证方案可以使用 DEFAULT_AUTHENTICATION_CLASSES setting 全局设置。例如

    REST_FRAMEWORK = {
        'DEFAULT_AUTHENTICATION_CLASSES': (
            'rest_framework.authentication.BasicAuthentication',
            'rest_framework.authentication.SessionAuthentication',
        )
    }
    

    基于 APIView 类的视图上设置身份验证策略

    authentication_classes = (SessionAuthentication,)
    

    API参考

    BasicAuthentication

    该认证方案使用 HTTP Basic Authentication,并根据用户的用户名和密码进行签名。Basic Authentication 通常只适用于测试。

    如果成功通过身份验证,BasicAuthentication 将提供以下凭据。

    request.user 是一个 Django User 实力.

    request.auth 是 None.

    未经身份验证的响应被拒绝将导致 HTTP 401 Unauthorized 的响应和相应的 WWW-Authenticate header。

    SessionAuthentication

    此认证方案使用 Django 的默认 session 后端进行认证。Session 身份验证适用于与您的网站在同一会话环境中运行的 AJAX 客户端。

    如果成功通过身份验证,则 SessionAuthentication 会提供以下凭据。

    request.user 是一个 Django User 实例.
    request.auth 是 None.
    未经身份验证的响应被拒绝将导致 HTTP 403 Forbidden 响应。

    如果您在 SessionAuthentication 中使用 AJAX 风格的 API,则需要确保为任何 “不安全” 的 HTTP 方法调用(例如 PUT,PATCH,POST 或 DELETE 请求)包含有效的 CSRF 令牌。

    JSONWebTokenAuthentication

    详见jwt篇

  • 相关阅读:
    Java类与对象
    读《大道至简——团队缺乏的不只是管理》有感
    java课后作业
    c++ 创建单项链表
    c++ 结构指针和双向链表
    c++ 自定义数据结构运用
    c++ 时间函数和结构化数据
    c++ 结束程序的几种方式
    c++ main函数的参数
    c++ 参数个数可变的函数
  • 原文地址:https://www.cnblogs.com/zenan/p/10715836.html
Copyright © 2011-2022 走看看