美文网首页
身份验证drf版

身份验证drf版

作者: 互联网中的一个咸鱼 | 来源:发表于2019-10-21 17:31 被阅读0次

    参考官方文档

    设置认证方案

    全局设置
    REST_FRAMEWORK = {
        'DEFAULT_AUTHENTICATION_CLASSES': (
            'rest_framework.authentication.BasicAuthentication',
            'rest_framework.authentication.SessionAuthentication',
        )
    }
    
    单个视图内设置

    使用基于APIView的视图

    from rest_framework.authentication import SessionAuthentication, BasicAuthentication
    from rest_framework.permissions import IsAuthenticated
    from rest_framework.response import Response
    from rest_framework.views import APIView
    
    class ExampleView(APIView):
        authentication_classes = (SessionAuthentication, BasicAuthentication)
        permission_classes = (IsAuthenticated,)
    
        def get(self, request, format=None):
            content = {
                'user': unicode(request.user),  # `django.contrib.auth.User` instance.
                'auth': unicode(request.auth),  # None
            }
            return Response(content)
    

    TokenAuthentication

    此认证方案使用简单的基于令牌的 HTTP 认证方案。令牌身份验证适用于 client-server 架构,例如本机桌面和移动客户端。
    要使用 TokenAuthentication 方案,您需要将认证类配置为包含 TokenAuthentication ,并在 INSTALLED_APPS 设置中另外包含 rest_framework.authtoken :

    视图

    authentication_classes = (TokenAuthentication,)  # Toekn认证
    

    settings.py

    INSTALLED_APPS = (
        ...
        'rest_framework.authtoken'
    )
    
    python3 manage.py makemigrations
    python3 manage.py migrate   # 生成token表
    

    创建令牌的方式

    from rest_framework.authtoken.models import Token
    token = Token.objects.create(user=...)  # user是一个UserProfile对象
    print token.key
    

    对于客户端进行身份验证,令牌密钥应包含在 Authorization HTTP header 中。关键字应以字符串文字 “Token” 为前缀,用空格分隔两个字符串。例如:
    Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b

    利用Postman软件操作

    • 生成token post方式


      image.png
    • 传递token get方式


      image.png

    相关文章

      网友评论

          本文标题:身份验证drf版

          本文链接:https://www.haomeiwen.com/subject/swptvctx.html